// ***************************************************************************
// *
// *   Copyright (C) 1997-2002, International Business Machines
// *   Corporation and others.  All Rights Reserved.
// *
// ***************************************************************************

en {
    Version { "1.0" }
    NumberPatterns { 
        "#,##0.###;-#,##0.###",
        "\u00A4#,##0.00;-\u00A4#,##0.00",
        "#,##0%",
        "#E0",
    }

    // Format for the display name of a Transliterator.
    // This is the English form of this resource.
    TransliteratorNamePattern { "{0,choice,0#|1#{1}|2#{1} to {2}}" }

    zoneStrings { 
        {
            "PST",
            "Pacific Standard Time",
            "PST",
            "Pacific Daylight Time",
            "PDT",
            "Los Angeles",
        }
        {
            "America/Los_Angeles",
            "Pacific Standard Time",
            "PST",
            "Pacific Daylight Time",
            "PDT",
            "Los Angeles",
        }
        {
            "MST",
            "Mountain Standard Time",
            "MST",
            "Mountain Daylight Time",
            "MDT",
            "Denver",
        }
        {
            "America/Denver",
            "Mountain Standard Time",
            "MST",
            "Mountain Daylight Time",
            "MDT",
            "Denver",
        }
        {
            "PNT",
            "Mountain Standard Time",
            "MST",
            "Mountain Standard Time",
            "MST",
            "Phoenix",
        }
        {
            "America/Phoenix",
            "Mountain Standard Time",
            "MST",
            "Mountain Standard Time",
            "MST",
            "Phoenix",
        }
        {
            "CST",
            "Central Standard Time",
            "CST",
            "Central Daylight Time",
            "CDT",
            "Chicago",
        }
        {
            "America/Chicago",
            "Central Standard Time",
            "CST",
            "Central Daylight Time",
            "CDT",
            "Chicago",
        }
        {
            "EST",
            "Eastern Standard Time",
            "EST",
            "Eastern Daylight Time",
            "EDT",
            "New York",
        }
        {
            "America/New_York",
            "Eastern Standard Time",
            "EST",
            "Eastern Daylight Time",
            "EDT",
            "New York",
        }
        {
            "IET",
            "Eastern Standard Time",
            "EST",
            "Eastern Standard Time",
            "EST",
            "Indianapolis",
        }
        {
            "America/Indianapolis",
            "Eastern Standard Time",
            "EST",
            "Eastern Standard Time",
            "EST",
            "Indianapolis",
        }
        {
            "HST",
            "Hawaii Standard Time",
            "HST",
            "Hawaii Standard Time",
            "HST",
            "Honolulu",
        }
        {
            "Pacific/Honolulu",
            "Hawaii Standard Time",
            "HST",
            "Hawaii Standard Time",
            "HST",
            "Honolulu",
        }
        {
            "AST",
            "Alaska Standard Time",
            "AST",
            "Alaska Daylight Time",
            "ADT",
            "Anchorage"
        }
        {
            "America/Anchorage",
            "Alaska Standard Time",
            "AST",
            "Alaska Daylight Time",
            "ADT",
            "Anchorage",
        }
        {
            "America/Halifax",
            "Atlantic Standard Time",
            "AST",
            "Atlantic Daylight Time",
            "ADT",
            "Halifax"
        }
        {
            "CNT",
            "Newfoundland Standard Time",
            "CNT",
            "Newfoundland Daylight Time",
            "CDT",
            "St. Johns",
        }
        {
            "America/St_Johns",
            "Newfoundland Standard Time",
            "CNT",
            "Newfoundland Daylight Time",
            "CDT",
            "St. Johns",
        }
        {
            "ECT",
            "Central European Standard Time",
            "CET",
            "Central European Daylight Time",
            "CEST",
            "Paris",
        }
        {
            "Europe/Paris",
            "Central European Standard Time",
            "CET",
            "Central European Daylight Time",
            "CEST",
            "Paris",
        }
        {
            "GMT",
            "Greenwich Mean Time",
            "GMT",
            "Greenwich Mean Time",
            "GMT",
            "London",
        }
        {
            "Africa/Casablanca",
            "Greenwich Mean Time",
            "GMT",
            "Greenwich Mean Time",
            "GMT",
            "Casablanca",
        }
        {
            "Asia/Jerusalem",
            "Israel Standard Time",
            "IST",
            "Israel Daylight Time",
            "IDT",
            "Jerusalem",
        }
        {
            "JST",
            "Japan Standard Time",
            "JST",
            "Japan Standard Time",
            "JST",
            "Tokyo",
        }
        {
            "Asia/Tokyo",
            "Japan Standard Time",
            "JST",
            "Japan Standard Time",
            "JST",
            "Tokyo",
        }
        {
            "Europe/Bucharest",
            "Eastern European Standard Time",
            "EET",
            "Eastern European Daylight Time",
            "EEST",
            "Bucharest",
        }
        {
            "CTT",
            "China Standard Time",
            "CTT",
            "China Standard Time",
            "CDT",
            "Shanghai",
        }
        {
            "Asia/Shanghai",
            "China Standard Time",
            "CTT",
            "China Standard Time",
            "CDT",
            "Shanghai",
        }
    }
    LocaleID:int { 0x09 }
//    LocaleScript{ 
//        "Latn",  // ISO 15924 Name 
//    }

    //------------------------------------------------------------
    // Rule Based Number Format Support
    //------------------------------------------------------------

//         * Spellout rules for U.S. English.  This rule set has two variants:
//         * %simplified is a set of rules showing the simple method of spelling
//         * out numbers in English: 289 is formatted as "two hundred eighty-nine".
//         * %default uses a more complicated algorithm to format
//         * numbers in a more natural way: 289 is formatted as "two hundred AND
//         * eighty-nine" and commas are inserted between the thousands groups for
//         * values above 100,000.

     SpelloutRules {
        // This rule set shows the normal simple formatting rules for English
        "%simplified:\n"
               // negative number rule.  This rule is used to format negative
               // numbers.  The result of formatting the number's absolute
               // value is placed where the >> is.
        "    -x: minus >>;\n"
               // faction rule.  This rule is used for formatting numbers
               // with fractional parts.  The result of formatting the
               // number's integral part is substituted for the <<, and
               // the result of formatting the number's fractional part
               // (one digit at a time, e.g., 0.123 is "zero point one two
               // three") replaces the >>.
        "    x.x: << point >>;\n"
               // the rules for the values from 0 to 19 are simply the
               // words for those numbers
        "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
        "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
        "        seventeen; eighteen; nineteen;\n"
               // beginning at 20, we use the >> to mark the position where
               // the result of formatting the number's ones digit.  Thus,
               // we only need a new rule at every multiple of 10.  Text in
               // backets is omitted if the value being formatted is an
               // even multiple of 10.
        "    20: twenty[->>];\n"
        "    30: thirty[->>];\n"
        "    40: forty[->>];\n"
        "    50: fifty[->>];\n"
        "    60: sixty[->>];\n"
        "    70: seventy[->>];\n"
        "    80: eighty[->>];\n"
        "    90: ninety[->>];\n"
               // beginning at 100, we can use << to mark the position where
               // the result of formatting the multiple of 100 is to be
               // inserted.  Notice also that the meaning of >> has shifted:
               // here, it refers to both the ones place and the tens place.
               // The meanings of the << and >> tokens depend on the base value
               // of the rule.  A rule's divisor is (usually) the highest
               // power of 10 that is less than or equal to the rule's base
               // value.  The value being formatted is divided by the rule's
               // divisor, and the integral quotient is used to get the text
               // for <<, while the remainder is used to produce the text
               // for >>.  Again, text in brackets is omitted if the value
               // being formatted is an even multiple of the rule's divisor
               // (in this case, an even multiple of 100)
        "    100: << hundred[ >>];\n"
               // The rules for the higher numbers work the same way as the
               // rule for 100: Again, the << and >> tokens depend on the
               // rule's divisor, which for all these rules is also the rule's
               // base value.  To group by thousand, we simply don't have any
               // rules between 1,000 and 1,000,000.
        "    1000: << thousand[ >>];\n"
        "    1,000,000: << million[ >>];\n"
        "    1,000,000,000: << billion[ >>];\n"
        "    1,000,000,000,000: << trillion[ >>];\n"
               // overflow rule.  This rule specifies that values of a
               // quadrillion or more are shown in numerals rather than words.
               // The == token means to format (with new rules) the value
               // being formatted by this rule and place the result where
               // the == is.  The #,##0 inside the == signs is a
               // DecimalFormat pattern.  It specifies that the value should
               // be formatted with a DecimalFormat object, and that it
               // should be formatted with no decimal places, at least one
               // digit, and a thousands separator.
        "    1,000,000,000,000,000: =#,##0=;\n"

        // %default is a more elaborate form of %simplified;  It is basically
        // the same, except that it introduces "and" before the ones digit
        // when appropriate (basically, between the tens and ones digits) and
        // separates the thousands groups with commas in values over 100,000.
        "%default:\n"
               // negative-number and fraction rules.  These are the same
               // as those for %simplified, but have to be stated here too
               // because this is an entry point
        "    -x: minus >>;\n"
        "    x.x: << point >>;\n"
               // just use %simplified for values below 100
        "    =%simplified=;\n"
               // for values from 100 to 9,999 use %%and to decide whether or
               // not to interpose the "and"
        "    100: << hundred[ >%%and>];\n"
        "    1000: << thousand[ >%%and>];\n"
               // for values of 100,000 and up, use %%commas to interpose the
               // commas in the right places (and also to interpose the "and")
        "    100,000>>: << thousand[>%%commas>];\n"
        "    1,000,000: << million[>%%commas>];\n"
        "    1,000,000,000: << billion[>%%commas>];\n"
        "    1,000,000,000,000: << trillion[>%%commas>];\n"
        "    1,000,000,000,000,000: =#,##0=;\n"
        // if the value passed to this rule set is greater than 100, don't
        // add the "and"; if it's less than 100, add "and" before the last
        // digits
        "%%and:\n"
        "    and =%default=;\n"
        "    100: =%default=;\n"
        // this rule set is used to place the commas
        "%%commas:\n"
               // for values below 100, add "and" (the apostrophe at the
               // beginning is ignored, but causes the space that follows it
               // to be significant: this is necessary because the rules
               // calling %%commas don't put a space before it)
        "    ' and =%default=;\n"
               // put a comma after the thousands (or whatever preceded the
               // hundreds)
        "    100: , =%default=;\n"
               // put a comma after the millions (or whatever precedes the
               // thousands)
        "    1000: , <%default< thousand, >%default>;\n"
               // and so on...
        "    1,000,000: , =%default=;"
        // %%lenient-parse isn't really a set of number formatting rules;
        // it's a set of collation rules.  Lenient-parse mode uses a Collator
        // object to compare fragments of the text being parsed to the text
        // in the rules, allowing more leeway in the matching text.  This set
        // of rules tells the formatter to ignore commas when parsing (it
        // already ignores spaces, which is why we refer to the space; it also
        // ignores hyphens, making "twenty one" and "twenty-one" parse
        // identically)
        "%%lenient-parse:\n"
        //            "    & ' ' , ',' ;\n"
        "   &\u0000 << ' ' << ',' << '-'; \n"
    }


//         * This rule set adds an English ordinal abbreviation to the end of a
//         * number.  For example, 2 is formatted as "2nd".  Parsing doesn't work with
//         * this rule set.  To parse, use DecimalFormat on the numeral.
    OrdinalRules {
        // this rule set formats the numeral and calls %%abbrev to
        // supply the abbreviation
        "%main:\n"
        "    =#,##0==%%abbrev=;\n"
        // this rule set supplies the abbreviation
        "%%abbrev:\n"
               // the abbreviations.  Everything from 4 to 19 ends in "th"
        "    th; st; nd; rd; th;\n"
               // at 20, we begin repeating the cycle every 10 (13 is "13th",
               // but 23 and 33 are "23rd" and "33rd")  We do this by
               // ignoring all bug the ones digit in selecting the abbreviation
        "    20: >>;\n"
               // at 100, we repeat the whole cycle by considering only the
               // tens and ones digits in picking an abbreviation
        "    100: >>;\n"
    }

//         * This rule set formats a number of seconds in sexagesimal notation
//         * (i.e., hours, minutes, and seconds).  %with-words formats it with
//         * words (3,740 is "1 hour, 2 minutes, 20 seconds") and %in-numerals
//         * formats it entirely in numerals (3,740 is "1:02:20").
    DurationRules {
        // main rule set for formatting with words
        "%with-words:\n"
               // take care of singular and plural forms of "second"
        "    0 seconds; 1 second; =0= seconds;\n"
               // use %%min to format values greater than 60 seconds
        "    60/60: <%%min<[, >>];\n"
               // use %%hr to format values greater than 3,600 seconds
               // (the ">>>" below causes us to see the number of minutes
               // when when there are zero minutes)
        "    3600/60: <%%hr<[, >>>];\n"
        // this rule set takes care of the singular and plural forms
        // of "minute"
        "%%min:\n"
        "    0 minutes; 1 minute; =0= minutes;\n"
        // this rule set takes care of the singular and plural forms
        // of "hour"
        "%%hr:\n"
        "    0 hours; 1 hour; =0= hours;\n"

        // main rule set for formatting in numerals
        "%in-numerals:\n"
               // values below 60 seconds are shown with "sec."
        "    =0= sec.;\n"
               // higher values are shown with colons: %%min-sec is used for
               // values below 3,600 seconds...
        "    60: =%%min-sec=;\n"
               // ...and %%hr-min-sec is used for values of 3,600 seconds
               // and above
        "    3600: =%%hr-min-sec=;\n"
        // this rule causes values of less than 10 minutes to show without
        // a leading zero
        "%%min-sec:\n"
        "    0: :=00=;\n"
        "    60/60: <0<>>;\n"
        // this rule set is used for values of 3,600 or more.  Minutes are always
        // shown, and always shown with two digits
        "%%hr-min-sec:\n"
        "    0: :=00=;\n"
        "    60/60: <00<>>;\n"
        "    3600/60: <#,##0<:>>>;\n"
        // the lenient-parse rules allow several different characters to be used
        // as delimiters between hours, minutes, and seconds
        "%%lenient-parse:\n"
        "    & ':' = '.' = ' ' = '-';\n" 
    }

    // Last update: Tue Apr  8 16:57:53 2003
    Currencies {
        ADP { "ADP", "Andorran Peseta" } // ANDORRA (AD)
        AED { "Dh", "UAE Dirham" } // UNITED ARAB EMIRATES (AE)
        AFN { "Af", "Afghani" } // AFGHANISTAN (AF)
        ALL { "lek", "Leck" } // ALBANIA (AL)
        AMD { "dram", "Armenian Dram" } // ARMENIA (AM)
        ANG { "NA f.", "Netherlands Antillan Guilder" } // NETHERLANDS ANTILLES (AN)
        AOA { "KZR", "Kwanza" } // ANGOLA (AO)
        ARS { "Arg$", "Argentine Peso" } // ARGENTINA (AR)
        AUD { "$A", "Australian Dollar" } // AUSTRALIA (AU), CHRISTMAS ISLAND (CX), COCOS (KEELING) ISLANDS (CC), HEARD ISLAND AND MCDONALD ISLANDS (HM), KIRIBATI (KI), NAURU (NR), NORFOLK ISLAND (NF), TUVALU (TV)
        AWG { "AWG", "Aruban Guilder" } // ARUBA (AW)
        AZM { "AZM", "Azerbaijanian Manat" } // AZERBAIJAN (AZ)
        BAM { "KM", "Convertible Marks" } // BOSNIA AND HERZEGOVINA (BA)
        BBD { "BDS$", "Barbados Dollar" } // BARBADOS (BB)
        BDT { "Tk", "Taka" } // BANGLADESH (BD)
        BEF { "BF", "Belgian Franc" } // BELGIUM (BE)
        BGL { "lev", "Lev" } // BULGARIA (BG)
        BGN { "BGN", "Bulgarian Lev" } // BULGARIA (BG)
        BHD { "BD", "Bahraini Dinar" } // BAHRAIN (BH)
        BIF { "Fbu", "Burundi Franc" } // BURUNDI (BI)
        BMD { "Ber$", "Bermudian Dollar" } // BERMUDA (BM)
        BND { "BND", "Brunei Dollar" } // BRUNEI DARUSSALAM (BN)
        BOB { "Bs", "Boliviano" } // BOLIVIA (BO)
        BOV { "BOV", "Mvdol" } // BOLIVIA (BO)
        BRL { "R$", "Brazilian Real" } // BRAZIL (BR)
        BSD { "BSD", "Bahamian Dollar" } // BAHAMAS (BS)
        BTN { "Nu", "Ngultrum" } // BHUTAN (BT)
        BWP { "BWP", "Pula" } // BOTSWANA (BW)
        BYR { "Rbl", "Belarussian Ruble" } // BELARUS (BY)
        BZD { "BZ$", "Belize Dollar" } // BELIZE (BZ)
        CAD { "Can$", "Canadian Dollar" } // CANADA (CA)
        CDF { "CGF", "Franc Congolais" } // CONGO, THE DEMOCRATIC REPUBLIC OF THE (CD)
        CHF { "SwF", "Swiss Franc" } // LIECHTENSTEIN (LI), SWITZERLAND (CH)
        CLF { "CLF", "Unidades de fomento" } // CHILE (CL)
        CLP { "Ch$", "Chilean Peso" } // CHILE (CL)
        CNY { "Y", "Yuan Renminbi" } // CHINA (CN)
        COP { "Col$", "Colombian Peso" } // COLOMBIA (CO)
        CRC { "C", "Costa Rican Colon" } // COSTA RICA (CR)
        CUP { "CUP", "Cuban Peso" } // CUBA (CU)
        CVE { "CVEsc", "Cape Verde Escudo" } // CAPE VERDE (CV)
        CYP { "\u00A3C", "Cyprus Pound" } // CYPRUS (CY)
        CZK { "CZK", "Czech Koruna" } // CZECH REPUBLIC (CZ)
        DJF { "DF", "Djibouti Franc" } // DJIBOUTI (DJ)
        DKK { "DKr", "Danish Krone" } // DENMARK (DK), FAROE ISLANDS (FO), GREENLAND (GL)
        DOP { "RD$", "Dominican Peso" } // DOMINICAN REPUBLIC (DO)
        DZD { "DA", "Algerian Dinar" } // ALGERIA (DZ)
        ECS { "ECS", "Sucre" } // ECUADOR (EC)
        ECV { "ECV", "Unidad de Valor Constante (UVC)" } // ECUADOR (EC)
        EEK { "EEK", "Kroon" } // ESTONIA (EE)
        EGP { "LE", "Egyptian Pound" } // EGYPT (EG)
        ERN { "ERN", "Nakfa" } // ERITREA (ER)
        ETB { "Br", "Ethiopian Birr" } // ETHIOPIA (ET)
        EUR { "\u20AC", "Euro" } // ANDORRA (AD), AUSTRIA (AT), BELGIUM (BE), FINLAND (FI), FRANCE (FR), FRENCH GUIANA (GF), FRENCH SOUTHERN TERRITORIES (TF), GERMANY (DE), GREECE (GR), GUADELOUPE (GP), HOLY SEE (VATICAN CITY STATE) (VA), IRELAND (IE), ITALY (IT), LUXEMBOURG (LU), MARTINIQUE (MQ), MAYOTTE (YT), MONACO (MC), NETHERLANDS (NL), PORTUGAL (PT), REUNION (RE), SAINT PIERRE AND MIQUELON (PM), SAN MARINO (SM), SPAIN (ES)
        FJD { "F$", "Fiji Dollar" } // FIJI (FJ)
        FKP { "FKP", "Falkland Islands Pound" } // FALKLAND ISLANDS (MALVINAS) (FK)
        GBP { "GBP", "Pound Sterling" } // UNITED KINGDOM (GB)
        GEL { "lari", "Lari" } // GEORGIA (GE)
        GHC { "GHC", "Cedi" } // GHANA (GH)
        GIP { "GIP", "Gibraltar Pound" } // GIBRALTAR (GI)
        GMD { "GMD", "Dalasi" } // GAMBIA (GM)
        GNF { "GF", "Guinea Franc" } // GUINEA (GN)
        GTQ { "Q", "Quetzal" } // GUATEMALA (GT)
        GWP { "GWP", "Guinea-Bissau Peso" } // GUINEA-BISSAU (GW)
        GYD { "G$", "Guyana Dollar" } // GUYANA (GY)
        HKD { "HK$", "Hong Kong Dollar" } // HONG KONG (HK)
        HNL { "L", "Lempira" } // HONDURAS (HN)
        HRK { "HRK", "Croatian kuna" } // CROATIA (HR)
        HTG { "HTG", "Gourde" } // HAITI (HT)
        HUF { "Ft", "Forint" } // HUNGARY (HU)
        IDR { "Rp", "Rupiah" } // INDONESIA (ID)
        IEP { "IR\u00A3", "Irish Pound" } // IRELAND (IE)
        ILS { "NIS", "New Israeli Sheqel" } // ISRAEL (IL)
        INR { "Re", "Indian Rupee" } // BHUTAN (BT), INDIA (IN)
        IQD { "ID", "Iraqi Dinar" } // IRAQ (IQ)
        IRR { "RI", "Iranian Rial" } // IRAN, ISLAMIC REPUBLIC OF (IR)
        ISK { "ISK", "Iceland Krona" } // ICELAND (IS)
        JMD { "J$", "Jamaican Dollar" } // JAMAICA (JM)
        JOD { "JD", "Jordanian Dinar" } // JORDAN (JO)
        JPY { "\uFFE5", "Yen" } // JAPAN (JP)
        KES { "K Sh", "Kenyan Shilling" } // KENYA (KE)
        KGS { "som", "Som" } // KYRGYZSTAN (KG)
        KHR { "CR", "Riel" } // CAMBODIA (KH)
        KMF { "CF", "Comoro Franc" } // COMOROS (KM)
        KPW { "KPW", "North Korean Won" } // KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF (KP)
        KRW { "\u20A9", "Won" } // KOREA, REPUBLIC OF (KR)
        KWD { "KD", "Kuwaiti Dinar" } // KUWAIT (KW)
        KYD { "KYD", "Cayman Islands Dollar" } // CAYMAN ISLANDS (KY)
        KZT { "T", "Tenge" } // KAZAKHSTAN (KZ)
        LAK { "KN", "Kip" } // LAO PEOPLE'S DEMOCRATIC REPUBLIC (LA)
        LBP { "LL", "Lebanese Pound" } // LEBANON (LB)
        LKR { "SL Re", "Sri Lanka Rupee" } // SRI LANKA (LK)
        LRD { "LRD", "Liberian Dollar" } // LIBERIA (LR)
        LSL { "M", "Loti" } // LESOTHO (LS)
        LTL { "LTL", "Lithuanian Litas" } // LITHUANIA (LT)
        LVL { "LVL", "Latvian Lats" } // LATVIA (LV)
        LYD { "LD", "Lybian Dinar" } // LIBYAN ARAB JAMAHIRIYA (LY)
        MAD { "DH", "Moroccan Dirham" } // MOROCCO (MA), WESTERN SAHARA (EH)
        MDL { "MDL", "Moldovan Leu" } // MOLDOVA, REPUBLIC OF (MD)
        MGF { "FMG", "Malagasy Franc" } // MADAGASCAR (MG)
        MKD { "MDen", "Denar" } // MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF (MK)
        MMK { "MMK", "Kyat" } // MYANMAR (MM)
        MNT { "Tug", "Tugrik" } // MONGOLIA (MN)
        MOP { "MOP", "Pataca" } // MACAO (MO)
        MRO { "UM", "Ouguiya" } // MAURITANIA (MR)
        MTL { "Lm", "Maltese Lira" } // MALTA (MT)
        MUR { "MUR", "Mauritius Rupee" } // MAURITIUS (MU)
        MVR { "Rf", "Rufiyaa" } // MALDIVES (MV)
        MWK { "MK", "Kwacha" } // MALAWI (MW)
        MXN { "MEX$", "Mexican Peso" } // MEXICO (MX)
        MXV { "MXV", "Mexican Unidad de Inversion (UDI)" } // MEXICO (MX)
        MYR { "RM", "Malaysian Ringgit" } // MALAYSIA (MY)
        MZM { "Mt", "Metical" } // MOZAMBIQUE (MZ)
        NAD { "N$", "Namibia Dollar" } // NAMIBIA (NA)
        NGN { "\u20A6", "Naira" } // NIGERIA (NG)
        NIO { "NIO", "Cordoba Oro" } // NICARAGUA (NI)
        NOK { "NKr", "Norwegian Krone" } // BOUVET ISLAND (BV), NORWAY (NO), SVALBARD AND JAN MAYEN (SJ)
        NPR { "Nrs", "Nepalese Rupee" } // NEPAL (NP)
        NZD { "$NZ", "New Zealand Dollar" } // COOK ISLANDS (CK), NEW ZEALAND (NZ), NIUE (NU), PITCAIRN (PN), TOKELAU (TK)
        OMR { "RO", "Rial Omani" } // OMAN (OM)
        PAB { "PAB", "Balboa" } // PANAMA (PA)
        PEN { "PEN", "Nuevo Sol" } // PERU (PE)
        PGK { "PGK", "Kina" } // PAPUA NEW GUINEA (PG)
        PHP { "PHP", "Philippine Peso" } // PHILIPPINES (PH)
        PKR { "Pra", "Pakistan Rupee" } // PAKISTAN (PK)
        PLN { "Zl", "Zloty" } // POLAND (PL)
        PYG { "PYG", "Guarani" } // PARAGUAY (PY)
        QAR { "QR", "Qatari Rial" } // QATAR (QA)
        ROL { "leu", "Leu" } // ROMANIA (RO)
        RUB { "RUB", "Russian Ruble" } // RUSSIAN FEDERATION (RU)
        RUR { "RUR", "Russian Ruble" } // RUSSIAN FEDERATION (RU)
        RWF { "RF", "Rwanda Franc" } // RWANDA (RW)
        SAR { "SRl", "Saudi Riyal" } // SAUDI ARABIA (SA)
        SBD { "SI$", "Solomon Islands Dollar" } // SOLOMON ISLANDS (SB)
        SCR { "SR", "Seychelles Rupee" } // SEYCHELLES (SC)
        SDD { "SDD", "Sudanese Dinar" } // SUDAN (SD)
        SEK { "SKr", "Swedish Krona" } // SWEDEN (SE)
        SGD { "S$", "Singapore Dollar" } // SINGAPORE (SG)
        SHP { "SHP", "Saint Helena Pound" } // SAINT HELENA (SH)
        SIT { "SIT", "Tolar" } // SLOVENIA (SI)
        SKK { "Sk", "Slovak Koruna" } // SLOVAKIA (SK)
        SLL { "Le", "Leone" } // SIERRA LEONE (SL)
        SOS { "So. Sh.", "Somali Shilling" } // SOMALIA (SO)
        SRG { "Sf", "Suriname Guilder" } // SURINAME (SR)
        STD { "Db", "Dobra" } // SAO TOME AND PRINCIPE (ST)
        SVC { "SVC", "El Salvador Colon" } // EL SALVADOR (SV)
        SYP { "LS", "Syrian Pound" } // SYRIAN ARAB REPUBLIC (SY)
        SZL { "E", "Lilangeni" } // SWAZILAND (SZ)
        THB { "THB", "Baht" } // THAILAND (TH)
        TJS { "TJS", "Somoni" } // TAJIKISTAN (TJ)
        TMM { "TMM", "Manat" } // TURKMENISTAN (TM)
        TND { "TND", "Tunisian Dinar" } // TUNISIA (TN)
        TOP { "T$", "Pa\u00b4anga" } // TONGA (TO)
        TRL { "TL", "Turkish Lira" } // TURKEY (TR)
        TTD { "TT$", "Trinidad and Tobago Dollar" } // TRINIDAD AND TOBAGO (TT)
        TWD { "NT$", "New Taiwan Dollar" } // TAIWAN, PROVINCE OF CHINA (TW)
        TZS { "T Sh", "Tanzanian Shilling" } // TANZANIA, UNITED REPUBLIC OF (TZ)
        UAH { "HRV", "Hryvnia" } // UKRAINE (UA)
        UGX { "U Sh", "Uganda Shilling" } // UGANDA (UG)
        USD { "US$", "US Dollar" } // AMERICAN SAMOA (AS), BRITISH INDIAN OCEAN TERRITORY (IO), TIMOR-LESTE (TL), EL SALVADOR (SV), GUAM (GU), HAITI (HT), MARSHALL ISLANDS (MH), MICRONESIA, FEDERATED STATES OF (FM), NORTHERN MARIANA ISLANDS (MP), PALAU (PW), PANAMA (PA), PUERTO RICO (PR), TURKS AND CAICOS ISLANDS (TC), UNITED STATES (US), UNITED STATES MINOR OUTLYING ISLANDS (UM), VIRGIN ISLANDS, BRITISH (VG), VIRGIN ISLANDS, U.S. (VI)
        USN { "USN", "US Dollar (Next day)" } // UNITED STATES (US)
        USS { "USS", "US Dollar (Same day)" } // UNITED STATES (US)
        UYU { "Ur$", "Peso Uruguayo" } // URUGUAY (UY)
        UZS { "SUM", "Uzbekistan Sum" } // UZBEKISTAN (UZ)
        VEB { "Be", "Bolivar" } // VENEZUELA (VE)
        VND { "VND", "Dong" } // VIET NAM (VN)
        VUV { "VT", "Vatu" } // VANUATU (VU)
        WST { "SAT", "Tala" } // SAMOA (WS)
        XAF { "XAF", "CFA Franc BEAC" } // CAMEROON (CM), CENTRAL AFRICAN REPUBLIC (CF), CHAD (TD), CONGO (CG), EQUATORIAL GUINEA (GQ), GABON (GA)
        XCD { "EC$", "East Caribbean Dollar" } // ANGUILLA (AI), ANTIGUA AND BARBUDA (AG), DOMINICA (DM), GRENADA (GD), MONTSERRAT (MS), SAINT KITTS AND NEVIS (KN), SAINT LUCIA (LC), SAINT VINCENT AND THE GRENADINES (VC)
        XOF { "XOF", "CFA Franc BCEAO" } // BENIN (BJ), BURKINA FASO (BF), COTE D'IVOIRE (CI), GUINEA-BISSAU (GW), MALI (ML), NIGER (NE), SENEGAL (SN), TOGO (TG)
        XPF { "CFPF", "CFP Franc" } // FRENCH POLYNESIA (PF), NEW CALEDONIA (NC), WALLIS AND FUTUNA (WF)
        YER { "YRl", "Yemeni Rial" } // YEMEN (YE)
        YUM { "YUD", "Yugoslavian Dinar" } // YUGOSLAVIA (YU)
        ZAR { "R", "Rand" } // LESOTHO (LS), NAMIBIA (NA), SOUTH AFRICA (ZA)
        ZMK { "ZMK", "Kwacha" } // ZAMBIA (ZM)
        ZWD { "Z$", "Zimbabwe Dollar" } // ZIMBABWE (ZW)
    }
}
