/*
 * Copyright 2012 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

/**
 * Localized names for the "zh_Hant_MO" locale.
 */
public class LocalizedNamesImpl_zh_Hant_MO extends LocalizedNamesImpl_zh_Hant {

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

  @Override
  protected void loadNameMapJava() {
    super.loadNameMapJava();
    namesMap.put("013", "中美洲");
    namesMap.put("029", "加勒比");
    namesMap.put("053", "澳大拉西亞");
    namesMap.put("061", "波利尼西亞");
    namesMap.put("AE", "阿拉伯聯合酋長國");
    namesMap.put("AG", "安提瓜和巴布達");
    namesMap.put("AW", "阿魯巴");
    namesMap.put("AZ", "亞塞拜疆");
    namesMap.put("BA", "波斯尼亞和黑塞哥維那");
    namesMap.put("BB", "巴巴多斯");
    namesMap.put("BF", "布基納法索");
    namesMap.put("BI", "布隆迪");
    namesMap.put("BJ", "貝寧");
    namesMap.put("BL", "聖巴泰勒米");
    namesMap.put("BV", "鮑威特島");
    namesMap.put("BW", "博茨瓦納");
    namesMap.put("BZ", "伯利茲");
    namesMap.put("CC", "科科斯 (基林) 群島");
    namesMap.put("CI", "科特迪瓦");
    namesMap.put("CP", "克里珀頓島");
    namesMap.put("CR", "哥斯達黎加");
    namesMap.put("CV", "佛得角");
    namesMap.put("CY", "塞浦路斯");
    namesMap.put("DJ", "吉布提");
    namesMap.put("DO", "多米尼加共和國");
    namesMap.put("EC", "厄瓜多爾");
    namesMap.put("ER", "厄立特里亞");
    namesMap.put("ET", "埃塞俄比亞");
    namesMap.put("GA", "加蓬");
    namesMap.put("GD", "格林納達");
    namesMap.put("GE", "格魯吉亞");
    namesMap.put("GH", "加納");
    namesMap.put("GM", "岡比亞");
    namesMap.put("GS", "南佐治亞島與南桑威奇群島");
    namesMap.put("GT", "危地馬拉");
    namesMap.put("GW", "幾內亞比紹");
    namesMap.put("GY", "圭亞那");
    namesMap.put("HN", "洪都拉斯");
    namesMap.put("HR", "克羅地亞");
    namesMap.put("IM", "馬恩島");
    namesMap.put("IT", "意大利");
    namesMap.put("KE", "肯尼亞");
    namesMap.put("KM", "科摩羅");
    namesMap.put("KN", "聖基茨和尼維斯");
    namesMap.put("LA", "老撾");
    namesMap.put("LC", "聖盧西亞");
    namesMap.put("LI", "列支敦士登");
    namesMap.put("LR", "利比里亞");
    namesMap.put("ME", "黑山");
    namesMap.put("ML", "馬里");
    namesMap.put("MR", "毛里塔尼亞");
    namesMap.put("MS", "蒙特塞拉特");
    namesMap.put("MT", "馬耳他");
    namesMap.put("MU", "毛里裘斯");
    namesMap.put("MV", "馬爾代夫");
    namesMap.put("MW", "馬拉維");
    namesMap.put("MZ", "莫桑比克");
    namesMap.put("NE", "尼日爾");
    namesMap.put("NG", "尼日利亞");
    namesMap.put("NR", "瑙魯");
    namesMap.put("PF", "法屬波利尼西亞");
    namesMap.put("PG", "巴布亞新幾內亞");
    namesMap.put("PN", "皮特凱恩島");
    namesMap.put("PS", "巴勒斯坦領土");
    namesMap.put("QA", "卡塔爾");
    namesMap.put("RW", "盧旺達");
    namesMap.put("SA", "沙地阿拉伯");
    namesMap.put("SB", "所羅門群島");
    namesMap.put("SC", "塞舌爾");
    namesMap.put("SI", "斯洛文尼亞");
    namesMap.put("SJ", "斯瓦爾巴特群島及揚馬延島");
    namesMap.put("SL", "塞拉利昂");
    namesMap.put("SO", "索馬里");
    namesMap.put("SR", "蘇里南");
    namesMap.put("ST", "聖多美和普林西比");
    namesMap.put("SZ", "斯威士蘭");
    namesMap.put("TC", "特克斯和凱科斯群島");
    namesMap.put("TD", "乍得");
    namesMap.put("TF", "法屬南部領地");
    namesMap.put("TG", "多哥共和國");
    namesMap.put("TO", "湯加");
    namesMap.put("TT", "千里達和多巴哥");
    namesMap.put("TV", "圖瓦盧");
    namesMap.put("TZ", "坦桑尼亞");
    namesMap.put("VC", "聖文森特和格林納丁斯");
    namesMap.put("VG", "英屬維爾京群島");
    namesMap.put("VI", "美屬維爾京群島");
    namesMap.put("VU", "瓦努阿圖");
    namesMap.put("YE", "也門");
    namesMap.put("YT", "馬約特");
    namesMap.put("ZM", "贊比亞");
    namesMap.put("ZW", "津巴布韋");
  }

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

  private native JavaScriptObject loadMyNameMap() /*-{
    return {
        "013": "中美洲",
        "029": "加勒比",
        "053": "澳大拉西亞",
        "061": "波利尼西亞",
        "AE": "阿拉伯聯合酋長國",
        "AG": "安提瓜和巴布達",
        "AW": "阿魯巴",
        "AZ": "亞塞拜疆",
        "BA": "波斯尼亞和黑塞哥維那",
        "BB": "巴巴多斯",
        "BF": "布基納法索",
        "BI": "布隆迪",
        "BJ": "貝寧",
        "BL": "聖巴泰勒米",
        "BV": "鮑威特島",
        "BW": "博茨瓦納",
        "BZ": "伯利茲",
        "CC": "科科斯 (基林) 群島",
        "CI": "科特迪瓦",
        "CP": "克里珀頓島",
        "CR": "哥斯達黎加",
        "CV": "佛得角",
        "CY": "塞浦路斯",
        "DJ": "吉布提",
        "DO": "多米尼加共和國",
        "EC": "厄瓜多爾",
        "ER": "厄立特里亞",
        "ET": "埃塞俄比亞",
        "GA": "加蓬",
        "GD": "格林納達",
        "GE": "格魯吉亞",
        "GH": "加納",
        "GM": "岡比亞",
        "GS": "南佐治亞島與南桑威奇群島",
        "GT": "危地馬拉",
        "GW": "幾內亞比紹",
        "GY": "圭亞那",
        "HN": "洪都拉斯",
        "HR": "克羅地亞",
        "IM": "馬恩島",
        "IT": "意大利",
        "KE": "肯尼亞",
        "KM": "科摩羅",
        "KN": "聖基茨和尼維斯",
        "LA": "老撾",
        "LC": "聖盧西亞",
        "LI": "列支敦士登",
        "LR": "利比里亞",
        "ME": "黑山",
        "ML": "馬里",
        "MR": "毛里塔尼亞",
        "MS": "蒙特塞拉特",
        "MT": "馬耳他",
        "MU": "毛里裘斯",
        "MV": "馬爾代夫",
        "MW": "馬拉維",
        "MZ": "莫桑比克",
        "NE": "尼日爾",
        "NG": "尼日利亞",
        "NR": "瑙魯",
        "PF": "法屬波利尼西亞",
        "PG": "巴布亞新幾內亞",
        "PN": "皮特凱恩島",
        "PS": "巴勒斯坦領土",
        "QA": "卡塔爾",
        "RW": "盧旺達",
        "SA": "沙地阿拉伯",
        "SB": "所羅門群島",
        "SC": "塞舌爾",
        "SI": "斯洛文尼亞",
        "SJ": "斯瓦爾巴特群島及揚馬延島",
        "SL": "塞拉利昂",
        "SO": "索馬里",
        "SR": "蘇里南",
        "ST": "聖多美和普林西比",
        "SZ": "斯威士蘭",
        "TC": "特克斯和凱科斯群島",
        "TD": "乍得",
        "TF": "法屬南部領地",
        "TG": "多哥共和國",
        "TO": "湯加",
        "TT": "千里達和多巴哥",
        "TV": "圖瓦盧",
        "TZ": "坦桑尼亞",
        "VC": "聖文森特和格林納丁斯",
        "VG": "英屬維爾京群島",
        "VI": "美屬維爾京群島",
        "VU": "瓦努阿圖",
        "YE": "也門",
        "YT": "馬約特",
        "ZM": "贊比亞",
        "ZW": "津巴布韋"
    };
  }-*/;
}
