/*
 * 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.impl.cldr;

import com.google.gwt.core.client.JavaScriptObject;

// DO NOT EDIT - GENERATED FROM CLDR DATA:
//  cldrVersion=25
//  date=$Date: 2013-08-29 04:32:04 +0200 (Thu, 29 Aug 2013) $
//  number=$Revision: 9287 $
//  type=nd

/**
 * Localized names for the "nd" locale.
 */
public class LocalizedNamesImpl_nd extends LocalizedNamesImpl {

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

  @Override
  protected void loadNameMapJava() {
    super.loadNameMapJava();
    namesMap.put("AD", "Andora");
    namesMap.put("AG", "Antigua le Barbuda");
    namesMap.put("AR", "Ajentina");
    namesMap.put("AS", "Samoa ye Amelika");
    namesMap.put("AW", "Arubha");
    namesMap.put("BA", "Bhosnia le Herzegovina");
    namesMap.put("BB", "Bhabhadosi");
    namesMap.put("BD", "Bhangiladeshi");
    namesMap.put("BE", "Bhelgium");
    namesMap.put("BF", "Bhukina Faso");
    namesMap.put("BG", "Bhulgariya");
    namesMap.put("BH", "Bhahareni");
    namesMap.put("BI", "Bhurundi");
    namesMap.put("BJ", "Bhenini");
    namesMap.put("BM", "Bhemuda");
    namesMap.put("BO", "Bholiviya");
    namesMap.put("BR", "Brazili");
    namesMap.put("BS", "Bhahamas");
    namesMap.put("BT", "Bhutani");
    namesMap.put("BY", "Bhelarusi");
    namesMap.put("BZ", "Bhelize");
    namesMap.put("CA", "Khanada");
    namesMap.put("CD", "Democratic Republic of the Congo");
    namesMap.put("CG", "Khongo");
    namesMap.put("CI", "Ivory Coast");
    namesMap.put("CM", "Khameruni");
    namesMap.put("CO", "Kholombiya");
    namesMap.put("CR", "Khosta Rikha");
    namesMap.put("CV", "Cape Verde Islands");
    namesMap.put("DK", "Denmakhi");
    namesMap.put("DM", "Dominikha");
    namesMap.put("DZ", "Aljeriya");
    namesMap.put("FK", "Falkland Islands");
    namesMap.put("FR", "Furansi");
    namesMap.put("GA", "Gabhoni");
    namesMap.put("GF", "Gwiyana ye Furansi");
    namesMap.put("GM", "Gambiya");
    namesMap.put("HT", "Hayiti");
    namesMap.put("ID", "Indonesiya");
    namesMap.put("IL", "Isuraeli");
    namesMap.put("IN", "Indiya");
    namesMap.put("IQ", "Iraki");
    namesMap.put("IT", "Itali");
    namesMap.put("JO", "Jodani");
    namesMap.put("KE", "Khenya");
    namesMap.put("KI", "Khiribati");
    namesMap.put("KM", "Khomoro");
    namesMap.put("KW", "Khuweiti");
    namesMap.put("LB", "Lebhanoni");
    namesMap.put("LR", "Libheriya");
    namesMap.put("LY", "Libhiya");
    namesMap.put("MA", "Morokho");
    namesMap.put("MC", "Monakho");
    namesMap.put("MG", "Madagaska");
    namesMap.put("MK", "Macedonia");
    namesMap.put("MM", "Myanmar");
    namesMap.put("MX", "Meksikho");
    namesMap.put("MY", "Malezhiya");
    namesMap.put("NA", "Namibhiya");
    namesMap.put("NG", "Nigeriya");
    namesMap.put("NO", "Noweyi");
    namesMap.put("NP", "Nephali");
    namesMap.put("OM", "Omani");
    namesMap.put("PE", "Pheru");
    namesMap.put("PF", "Pholinesiya ye Fulansi");
    namesMap.put("PK", "Phakistani");
    namesMap.put("PL", "Pholandi");
    namesMap.put("PN", "Pitcairn");
    namesMap.put("PS", "Palestinian West Bank and Gaza");
    namesMap.put("QA", "Kathari");
    namesMap.put("RU", "Rashiya");
    namesMap.put("RW", "Ruwanda");
    namesMap.put("SD", "Sudani");
    namesMap.put("SN", "Senegali");
    namesMap.put("SO", "Somaliya");
    namesMap.put("TD", "Chadi");
    namesMap.put("TG", "Thogo");
    namesMap.put("TH", "Thayilandi");
    namesMap.put("TK", "Thokelawu");
    namesMap.put("TL", "East Timor");
    namesMap.put("TN", "Tunisiya");
    namesMap.put("TO", "Thonga");
    namesMap.put("TR", "Thekhi");
    namesMap.put("TT", "Trinidad le Tobago");
    namesMap.put("TV", "Thuvalu");
    namesMap.put("TW", "Thayiwani");
    namesMap.put("TZ", "Tanzaniya");
    namesMap.put("UA", "Yukreini");
    namesMap.put("US", "Amelika");
    namesMap.put("UY", "Yurugwai");
    namesMap.put("VA", "Vatican State");
    namesMap.put("VC", "Saint Vincent and the Grenadines");
    namesMap.put("VU", "Vhanuatu");
    namesMap.put("WS", "Samowa");
    namesMap.put("YE", "Yemeni");
    namesMap.put("ZA", "Mzansi ye Afrika");
    namesMap.put("ZM", "Zambiya");
  }

  @Override
  protected JavaScriptObject loadNameMapNative() {
    return overrideMap(super.loadNameMapNative(), loadMyNameMap());
  }

  private native JavaScriptObject loadMyNameMap() /*-{
    return {
        "AD": "Andora",
        "AG": "Antigua le Barbuda",
        "AR": "Ajentina",
        "AS": "Samoa ye Amelika",
        "AW": "Arubha",
        "BA": "Bhosnia le Herzegovina",
        "BB": "Bhabhadosi",
        "BD": "Bhangiladeshi",
        "BE": "Bhelgium",
        "BF": "Bhukina Faso",
        "BG": "Bhulgariya",
        "BH": "Bhahareni",
        "BI": "Bhurundi",
        "BJ": "Bhenini",
        "BM": "Bhemuda",
        "BO": "Bholiviya",
        "BR": "Brazili",
        "BS": "Bhahamas",
        "BT": "Bhutani",
        "BY": "Bhelarusi",
        "BZ": "Bhelize",
        "CA": "Khanada",
        "CD": "Democratic Republic of the Congo",
        "CG": "Khongo",
        "CI": "Ivory Coast",
        "CM": "Khameruni",
        "CO": "Kholombiya",
        "CR": "Khosta Rikha",
        "CV": "Cape Verde Islands",
        "DK": "Denmakhi",
        "DM": "Dominikha",
        "DZ": "Aljeriya",
        "FK": "Falkland Islands",
        "FR": "Furansi",
        "GA": "Gabhoni",
        "GF": "Gwiyana ye Furansi",
        "GM": "Gambiya",
        "HT": "Hayiti",
        "ID": "Indonesiya",
        "IL": "Isuraeli",
        "IN": "Indiya",
        "IQ": "Iraki",
        "IT": "Itali",
        "JO": "Jodani",
        "KE": "Khenya",
        "KI": "Khiribati",
        "KM": "Khomoro",
        "KW": "Khuweiti",
        "LB": "Lebhanoni",
        "LR": "Libheriya",
        "LY": "Libhiya",
        "MA": "Morokho",
        "MC": "Monakho",
        "MG": "Madagaska",
        "MK": "Macedonia",
        "MM": "Myanmar",
        "MX": "Meksikho",
        "MY": "Malezhiya",
        "NA": "Namibhiya",
        "NG": "Nigeriya",
        "NO": "Noweyi",
        "NP": "Nephali",
        "OM": "Omani",
        "PE": "Pheru",
        "PF": "Pholinesiya ye Fulansi",
        "PK": "Phakistani",
        "PL": "Pholandi",
        "PN": "Pitcairn",
        "PS": "Palestinian West Bank and Gaza",
        "QA": "Kathari",
        "RU": "Rashiya",
        "RW": "Ruwanda",
        "SD": "Sudani",
        "SN": "Senegali",
        "SO": "Somaliya",
        "TD": "Chadi",
        "TG": "Thogo",
        "TH": "Thayilandi",
        "TK": "Thokelawu",
        "TL": "East Timor",
        "TN": "Tunisiya",
        "TO": "Thonga",
        "TR": "Thekhi",
        "TT": "Trinidad le Tobago",
        "TV": "Thuvalu",
        "TW": "Thayiwani",
        "TZ": "Tanzaniya",
        "UA": "Yukreini",
        "US": "Amelika",
        "UY": "Yurugwai",
        "VA": "Vatican State",
        "VC": "Saint Vincent and the Grenadines",
        "VU": "Vhanuatu",
        "WS": "Samowa",
        "YE": "Yemeni",
        "ZA": "Mzansi ye Afrika",
        "ZM": "Zambiya"
    };
  }-*/;
}
