/*
 * Copyright 2014 Google Inc.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.google.gwt.i18n.client;

// DO NOT EDIT - GENERATED FROM CLDR DATA:
//  cldrVersion=25
//  date=$Date: 2014-02-14 23:49:13 +0100 (Fri, 14 Feb 2014) $
//  number=$Revision: 9737 Google $
//  type=root

/**
 * Default LocalizedNames implementation.
 */
public class DefaultLocalizedNames extends DefaultLocalizedNamesBase {
  @Override
  protected void loadNameMap() {
    super.loadNameMap();
    namesMap.put("001", "World");
    namesMap.put("002", "Africa");
    namesMap.put("003", "North America");
    namesMap.put("005", "South America");
    namesMap.put("009", "Oceania");
    namesMap.put("011", "Western Africa");
    namesMap.put("013", "Central America");
    namesMap.put("014", "Eastern Africa");
    namesMap.put("015", "Northern Africa");
    namesMap.put("017", "Middle Africa");
    namesMap.put("018", "Southern Africa");
    namesMap.put("019", "Americas");
    namesMap.put("021", "Northern America");
    namesMap.put("029", "Caribbean");
    namesMap.put("030", "Eastern Asia");
    namesMap.put("034", "Southern Asia");
    namesMap.put("035", "South-Eastern Asia");
    namesMap.put("039", "Southern Europe");
    namesMap.put("053", "Australasia");
    namesMap.put("054", "Melanesia");
    namesMap.put("057", "Micronesian Region");
    namesMap.put("061", "Polynesia");
    namesMap.put("142", "Asia");
    namesMap.put("143", "Central Asia");
    namesMap.put("145", "Western Asia");
    namesMap.put("150", "Europe");
    namesMap.put("151", "Eastern Europe");
    namesMap.put("154", "Northern Europe");
    namesMap.put("155", "Western Europe");
    namesMap.put("419", "Latin America");
    namesMap.put("AC", "Ascension Island");
    namesMap.put("AD", "Andorra");
    namesMap.put("AE", "United Arab Emirates");
    namesMap.put("AF", "Afghanistan");
    namesMap.put("AG", "Antigua and Barbuda");
    namesMap.put("AI", "Anguilla");
    namesMap.put("AL", "Albania");
    namesMap.put("AM", "Armenia");
    namesMap.put("AN", "Netherlands Antilles");
    namesMap.put("AO", "Angola");
    namesMap.put("AQ", "Antarctica");
    namesMap.put("AR", "Argentina");
    namesMap.put("AS", "American Samoa");
    namesMap.put("AT", "Austria");
    namesMap.put("AU", "Australia");
    namesMap.put("AW", "Aruba");
    namesMap.put("AX", "Åland Islands");
    namesMap.put("AZ", "Azerbaijan");
    namesMap.put("BA", "Bosnia and Herzegovina");
    namesMap.put("BB", "Barbados");
    namesMap.put("BD", "Bangladesh");
    namesMap.put("BE", "Belgium");
    namesMap.put("BF", "Burkina Faso");
    namesMap.put("BG", "Bulgaria");
    namesMap.put("BH", "Bahrain");
    namesMap.put("BI", "Burundi");
    namesMap.put("BJ", "Benin");
    namesMap.put("BL", "Saint Barthélemy");
    namesMap.put("BM", "Bermuda");
    namesMap.put("BN", "Brunei");
    namesMap.put("BO", "Bolivia");
    namesMap.put("BQ", "Caribbean Netherlands");
    namesMap.put("BR", "Brazil");
    namesMap.put("BS", "Bahamas");
    namesMap.put("BT", "Bhutan");
    namesMap.put("BV", "Bouvet Island");
    namesMap.put("BW", "Botswana");
    namesMap.put("BY", "Belarus");
    namesMap.put("BZ", "Belize");
    namesMap.put("CA", "Canada");
    namesMap.put("CC", "Cocos (Keeling) Islands");
    namesMap.put("CD", "Congo (DRC)");
    namesMap.put("CF", "Central African Republic");
    namesMap.put("CG", "Congo (Republic)");
    namesMap.put("CH", "Switzerland");
    namesMap.put("CI", "Côte d’Ivoire");
    namesMap.put("CK", "Cook Islands");
    namesMap.put("CL", "Chile");
    namesMap.put("CM", "Cameroon");
    namesMap.put("CN", "China");
    namesMap.put("CO", "Colombia");
    namesMap.put("CP", "Clipperton Island");
    namesMap.put("CR", "Costa Rica");
    namesMap.put("CU", "Cuba");
    namesMap.put("CV", "Cape Verde");
    namesMap.put("CW", "Curaçao");
    namesMap.put("CX", "Christmas Island");
    namesMap.put("CY", "Cyprus");
    namesMap.put("CZ", "Czech Republic");
    namesMap.put("DE", "Germany");
    namesMap.put("DG", "Diego Garcia");
    namesMap.put("DJ", "Djibouti");
    namesMap.put("DK", "Denmark");
    namesMap.put("DM", "Dominica");
    namesMap.put("DO", "Dominican Republic");
    namesMap.put("DZ", "Algeria");
    namesMap.put("EA", "Ceuta and Melilla");
    namesMap.put("EC", "Ecuador");
    namesMap.put("EE", "Estonia");
    namesMap.put("EG", "Egypt");
    namesMap.put("EH", "Western Sahara");
    namesMap.put("ER", "Eritrea");
    namesMap.put("ES", "Spain");
    namesMap.put("ET", "Ethiopia");
    namesMap.put("EU", "European Union");
    namesMap.put("FI", "Finland");
    namesMap.put("FJ", "Fiji");
    namesMap.put("FK", "Falkland Islands (Islas Malvinas)");
    namesMap.put("FM", "Micronesia");
    namesMap.put("FO", "Faroe Islands");
    namesMap.put("FR", "France");
    namesMap.put("GA", "Gabon");
    namesMap.put("GB", "United Kingdom");
    namesMap.put("GD", "Grenada");
    namesMap.put("GE", "Georgia");
    namesMap.put("GF", "French Guiana");
    namesMap.put("GG", "Guernsey");
    namesMap.put("GH", "Ghana");
    namesMap.put("GI", "Gibraltar");
    namesMap.put("GL", "Greenland");
    namesMap.put("GM", "Gambia");
    namesMap.put("GN", "Guinea");
    namesMap.put("GP", "Guadeloupe");
    namesMap.put("GQ", "Equatorial Guinea");
    namesMap.put("GR", "Greece");
    namesMap.put("GS", "South Georgia & South Sandwich Islands");
    namesMap.put("GT", "Guatemala");
    namesMap.put("GU", "Guam");
    namesMap.put("GW", "Guinea-Bissau");
    namesMap.put("GY", "Guyana");
    namesMap.put("HK", "Hong Kong SAR China");
    namesMap.put("HM", "Heard & McDonald Islands");
    namesMap.put("HN", "Honduras");
    namesMap.put("HR", "Croatia");
    namesMap.put("HT", "Haiti");
    namesMap.put("HU", "Hungary");
    namesMap.put("IC", "Canary Islands");
    namesMap.put("ID", "Indonesia");
    namesMap.put("IE", "Ireland");
    namesMap.put("IL", "Israel");
    namesMap.put("IM", "Isle of Man");
    namesMap.put("IN", "India");
    namesMap.put("IO", "British Indian Ocean Territory");
    namesMap.put("IQ", "Iraq");
    namesMap.put("IR", "Iran");
    namesMap.put("IS", "Iceland");
    namesMap.put("IT", "Italy");
    namesMap.put("JE", "Jersey");
    namesMap.put("JM", "Jamaica");
    namesMap.put("JO", "Jordan");
    namesMap.put("JP", "Japan");
    namesMap.put("KE", "Kenya");
    namesMap.put("KG", "Kyrgyzstan");
    namesMap.put("KH", "Cambodia");
    namesMap.put("KI", "Kiribati");
    namesMap.put("KM", "Comoros");
    namesMap.put("KN", "Saint Kitts and Nevis");
    namesMap.put("KP", "North Korea");
    namesMap.put("KR", "South Korea");
    namesMap.put("KW", "Kuwait");
    namesMap.put("KY", "Cayman Islands");
    namesMap.put("KZ", "Kazakhstan");
    namesMap.put("LA", "Laos");
    namesMap.put("LB", "Lebanon");
    namesMap.put("LC", "Saint Lucia");
    namesMap.put("LI", "Liechtenstein");
    namesMap.put("LK", "Sri Lanka");
    namesMap.put("LR", "Liberia");
    namesMap.put("LS", "Lesotho");
    namesMap.put("LT", "Lithuania");
    namesMap.put("LU", "Luxembourg");
    namesMap.put("LV", "Latvia");
    namesMap.put("LY", "Libya");
    namesMap.put("MA", "Morocco");
    namesMap.put("MC", "Monaco");
    namesMap.put("MD", "Moldova");
    namesMap.put("ME", "Montenegro");
    namesMap.put("MF", "Saint Martin");
    namesMap.put("MG", "Madagascar");
    namesMap.put("MH", "Marshall Islands");
    namesMap.put("MK", "Macedonia (FYROM)");
    namesMap.put("ML", "Mali");
    namesMap.put("MM", "Myanmar (Burma)");
    namesMap.put("MN", "Mongolia");
    namesMap.put("MO", "Macau SAR China");
    namesMap.put("MP", "Northern Mariana Islands");
    namesMap.put("MQ", "Martinique");
    namesMap.put("MR", "Mauritania");
    namesMap.put("MS", "Montserrat");
    namesMap.put("MT", "Malta");
    namesMap.put("MU", "Mauritius");
    namesMap.put("MV", "Maldives");
    namesMap.put("MW", "Malawi");
    namesMap.put("MX", "Mexico");
    namesMap.put("MY", "Malaysia");
    namesMap.put("MZ", "Mozambique");
    namesMap.put("NA", "Namibia");
    namesMap.put("NC", "New Caledonia");
    namesMap.put("NE", "Niger");
    namesMap.put("NF", "Norfolk Island");
    namesMap.put("NG", "Nigeria");
    namesMap.put("NI", "Nicaragua");
    namesMap.put("NL", "Netherlands");
    namesMap.put("NO", "Norway");
    namesMap.put("NP", "Nepal");
    namesMap.put("NR", "Nauru");
    namesMap.put("NU", "Niue");
    namesMap.put("NZ", "New Zealand");
    namesMap.put("OM", "Oman");
    namesMap.put("PA", "Panama");
    namesMap.put("PE", "Peru");
    namesMap.put("PF", "French Polynesia");
    namesMap.put("PG", "Papua New Guinea");
    namesMap.put("PH", "Philippines");
    namesMap.put("PK", "Pakistan");
    namesMap.put("PL", "Poland");
    namesMap.put("PM", "Saint Pierre and Miquelon");
    namesMap.put("PN", "Pitcairn Islands");
    namesMap.put("PR", "Puerto Rico");
    namesMap.put("PS", "Palestinian Territories");
    namesMap.put("PT", "Portugal");
    namesMap.put("PW", "Palau");
    namesMap.put("PY", "Paraguay");
    namesMap.put("QA", "Qatar");
    namesMap.put("QO", "Outlying Oceania");
    namesMap.put("RE", "Réunion");
    namesMap.put("RO", "Romania");
    namesMap.put("RS", "Serbia");
    namesMap.put("RU", "Russia");
    namesMap.put("RW", "Rwanda");
    namesMap.put("SA", "Saudi Arabia");
    namesMap.put("SB", "Solomon Islands");
    namesMap.put("SC", "Seychelles");
    namesMap.put("SD", "Sudan");
    namesMap.put("SE", "Sweden");
    namesMap.put("SG", "Singapore");
    namesMap.put("SH", "Saint Helena");
    namesMap.put("SI", "Slovenia");
    namesMap.put("SJ", "Svalbard and Jan Mayen");
    namesMap.put("SK", "Slovakia");
    namesMap.put("SL", "Sierra Leone");
    namesMap.put("SM", "San Marino");
    namesMap.put("SN", "Senegal");
    namesMap.put("SO", "Somalia");
    namesMap.put("SR", "Suriname");
    namesMap.put("SS", "South Sudan");
    namesMap.put("ST", "São Tomé and Príncipe");
    namesMap.put("SV", "El Salvador");
    namesMap.put("SX", "Sint Maarten");
    namesMap.put("SY", "Syria");
    namesMap.put("SZ", "Swaziland");
    namesMap.put("TA", "Tristan da Cunha");
    namesMap.put("TC", "Turks and Caicos Islands");
    namesMap.put("TD", "Chad");
    namesMap.put("TF", "French Southern Territories");
    namesMap.put("TG", "Togo");
    namesMap.put("TH", "Thailand");
    namesMap.put("TJ", "Tajikistan");
    namesMap.put("TK", "Tokelau");
    namesMap.put("TL", "Timor-Leste");
    namesMap.put("TM", "Turkmenistan");
    namesMap.put("TN", "Tunisia");
    namesMap.put("TO", "Tonga");
    namesMap.put("TR", "Turkey");
    namesMap.put("TT", "Trinidad and Tobago");
    namesMap.put("TV", "Tuvalu");
    namesMap.put("TW", "Taiwan");
    namesMap.put("TZ", "Tanzania");
    namesMap.put("UA", "Ukraine");
    namesMap.put("UG", "Uganda");
    namesMap.put("UM", "U.S. Outlying Islands");
    namesMap.put("US", "United States");
    namesMap.put("UY", "Uruguay");
    namesMap.put("UZ", "Uzbekistan");
    namesMap.put("VA", "Vatican City");
    namesMap.put("VC", "St. Vincent & Grenadines");
    namesMap.put("VE", "Venezuela");
    namesMap.put("VG", "British Virgin Islands");
    namesMap.put("VI", "U.S. Virgin Islands");
    namesMap.put("VN", "Vietnam");
    namesMap.put("VU", "Vanuatu");
    namesMap.put("WF", "Wallis and Futuna");
    namesMap.put("WS", "Samoa");
    namesMap.put("XK", "Kosovo");
    namesMap.put("YE", "Yemen");
    namesMap.put("YT", "Mayotte");
    namesMap.put("ZA", "South Africa");
    namesMap.put("ZM", "Zambia");
    namesMap.put("ZW", "Zimbabwe");
    namesMap.put("ZZ", "Unknown Region");
  }

  @Override
  public String[] loadSortedRegionCodes() {
    return new String[] {
        "AF",
        "AX",
        "AL",
        "DZ",
        "AS",
        "AD",
        "AO",
        "AI",
        "AQ",
        "AG",
        "AR",
        "AM",
        "AW",
        "AC",
        "AU",
        "AT",
        "AZ",
        "BS",
        "BH",
        "BD",
        "BB",
        "BY",
        "BE",
        "BZ",
        "BJ",
        "BM",
        "BT",
        "BO",
        "BA",
        "BW",
        "BV",
        "BR",
        "IO",
        "VG",
        "BN",
        "BG",
        "BF",
        "BI",
        "KH",
        "CM",
        "CA",
        "IC",
        "CV",
        "BQ",
        "KY",
        "CF",
        "EA",
        "TD",
        "CL",
        "CN",
        "CX",
        "CP",
        "CC",
        "CO",
        "KM",
        "CD",
        "CG",
        "CK",
        "CR",
        "CI",
        "HR",
        "CU",
        "CW",
        "CY",
        "CZ",
        "DK",
        "DG",
        "DJ",
        "DM",
        "DO",
        "EC",
        "EG",
        "SV",
        "GQ",
        "ER",
        "EE",
        "ET",
        "EU",
        "FK",
        "FO",
        "FJ",
        "FI",
        "FR",
        "GF",
        "PF",
        "TF",
        "GA",
        "GM",
        "GE",
        "DE",
        "GH",
        "GI",
        "GR",
        "GL",
        "GD",
        "GP",
        "GU",
        "GT",
        "GG",
        "GN",
        "GW",
        "GY",
        "HT",
        "HM",
        "HN",
        "HK",
        "HU",
        "IS",
        "IN",
        "ID",
        "IR",
        "IQ",
        "IE",
        "IM",
        "IL",
        "IT",
        "JM",
        "JP",
        "JE",
        "JO",
        "KZ",
        "KE",
        "KI",
        "XK",
        "KW",
        "KG",
        "LA",
        "LV",
        "LB",
        "LS",
        "LR",
        "LY",
        "LI",
        "LT",
        "LU",
        "MO",
        "MK",
        "MG",
        "MW",
        "MY",
        "MV",
        "ML",
        "MT",
        "MH",
        "MQ",
        "MR",
        "MU",
        "YT",
        "MX",
        "FM",
        "MD",
        "MC",
        "MN",
        "ME",
        "MS",
        "MA",
        "MZ",
        "MM",
        "NA",
        "NR",
        "NP",
        "NL",
        "AN",
        "NC",
        "NZ",
        "NI",
        "NE",
        "NG",
        "NU",
        "NF",
        "MP",
        "KP",
        "NO",
        "OM",
        "QO",
        "PK",
        "PW",
        "PS",
        "PA",
        "PG",
        "PY",
        "PE",
        "PH",
        "PN",
        "PL",
        "PT",
        "PR",
        "QA",
        "RE",
        "RO",
        "RU",
        "RW",
        "BL",
        "SH",
        "KN",
        "LC",
        "MF",
        "PM",
        "WS",
        "SM",
        "ST",
        "SA",
        "SN",
        "RS",
        "SC",
        "SL",
        "SG",
        "SX",
        "SK",
        "SI",
        "SB",
        "SO",
        "ZA",
        "GS",
        "KR",
        "SS",
        "ES",
        "LK",
        "VC",
        "SD",
        "SR",
        "SJ",
        "SZ",
        "SE",
        "CH",
        "SY",
        "TW",
        "TJ",
        "TZ",
        "TH",
        "TL",
        "TG",
        "TK",
        "TO",
        "TT",
        "TA",
        "TN",
        "TR",
        "TM",
        "TC",
        "TV",
        "UM",
        "VI",
        "UG",
        "UA",
        "AE",
        "GB",
        "US",
        "UY",
        "UZ",
        "VU",
        "VA",
        "VE",
        "VN",
        "WF",
        "EH",
        "YE",
        "ZM",
        "ZW",
    };
  }
}
