// ***************************************************************************
// *
// *   Copyright (C) 1997-2007, International Business Machines
// *   Corporation and others.  All Rights Reserved.
// *
// ***************************************************************************
CurrencyData:table(nofallback){
    // Currency metadata.  Unlike the "Currencies" element, this is
    // NOT true locale data.  It exists only in root.  The two
    // integers are the fraction digits for each currency, and the
    // rounding increment.  The fraction digits must be an integer
    // from 0..9.  If there is no rounding, the rounding increment is
    // zero.  Otherwise the rounding increment is given in units of
    // 10^(-fraction_digits).  The special tag "DEFAULT" gives the
    // meta data for all currencies not otherwise listed.
    // Last update: Tue Apr  8 16:57:42 2003
    CurrencyMeta {
        ADP:intvector { 0, 0 } // Andorran Peseta: ANDORRA (AD)
        BHD:intvector { 3, 0 } // Bahraini Dinar: BAHRAIN (BH)
        BIF:intvector { 0, 0 } // Burundi Franc: BURUNDI (BI)
        BYR:intvector { 0, 0 } // Belarussian Ruble: BELARUS (BY)
        CHF:intvector { 2, 5 } // Swiss Franc: LIECHTENSTEIN (LI), SWITZERLAND (CH)
        CLF:intvector { 0, 0 } // Unidades de fomento: CHILE (CL)
        CLP:intvector { 0, 0 } // Chilean Peso: CHILE (CL)
        DJF:intvector { 0, 0 } // Djibouti Franc: DJIBOUTI (DJ)
        ESP:intvector { 0, 0 } // Spanish Pesenta: Spain (ES)
        GNF:intvector { 0, 0 } // Guinea Franc: GUINEA (GN)
        IQD:intvector { 3, 0 } // Iraqi Dinar: IRAQ (IQ)
        ITL:intvector { 0, 0 } // Italian Lira: ITALY (IT)
        JOD:intvector { 3, 0 } // Jordanian Dinar: JORDAN (JO)
        JPY:intvector { 0, 0 } // Yen: JAPAN (JP)
        KMF:intvector { 0, 0 } // Comoro Franc: COMOROS (KM)
        KRW:intvector { 0, 0 } // Won: KOREA, REPUBLIC OF (KR)
        KWD:intvector { 3, 0 } // Kuwaiti Dinar: KUWAIT (KW)
        LUF:intvector { 0, 0 } // LUXEMBOURG Franc: LUXEMBOURG (LU)
        LYD:intvector { 3, 0 } // Lybian Dinar: LIBYAN ARAB JAMAHIRIYA (LY)
        MGA:intvector { 0, 0 } // Malagascy Ariary: MADAGASCAR (MG)
        MGF:intvector { 0, 0 } // Malagasy Franc: MADAGASCAR (MG)
        OMR:intvector { 3, 0 } // Rial Omani: OMAN (OM)
        PYG:intvector { 0, 0 } // Guarani: PARAGUAY (PY)
        RWF:intvector { 0, 0 } // Rwanda Franc: RWANDA (RW)
        TND:intvector { 3, 0 } // Tunisian Dinar: TUNISIA (TN)
        TRL:intvector { 0, 0 } // Turkish Lira: TURKEY (TR)
        VUV:intvector { 0, 0 } // Vatu: VANUATU (VU)
        XAF:intvector { 0, 0 } // CFA Franc BEAC: CAMEROON (CM), CENTRAL AFRICAN REPUBLIC (CF), CHAD (TD), CONGO (CG), EQUATORIAL GUINEA (GQ), GABON (GA)
        XOF:intvector { 0, 0 } // CFA Franc BCEAO: BENIN (BJ), BURKINA FASO (BF), COTE D'IVOIRE (CI), GUINEA-BISSAU (GW), MALI (ML), NIGER (NE), SENEGAL (SN), TOGO (TG)
        XPF:intvector { 0, 0 } // CFP Franc: FRENCH POLYNESIA (PF), NEW CALEDONIA (NC), WALLIS AND FUTUNA (WF)
        DEFAULT:intvector { 2, 0 } // (All currencies not listed)
    }
    // Map from ISO 3166 country codes to ISO 4217 currency codes
    // NOTE: This is not true locale data; it exists only in ROOT
    // Last update: Tue Apr  8 16:57:42 2003
    CurrencyMap {
        _EURO { "EUR" } // : Euro
        AD { "EUR" } // ANDORRA: UAE Euro
        AE { "AED" } // UNITED ARAB EMIRATES: UAE Dirham
        AF { "AFN" } // AFGHANISTAN: Afghani
        AG { "XCD" } // ANTIGUA AND BARBUDA: East Caribbean Dollar
        AI { "XCD" } // ANGUILLA: East Caribbean Dollar
        AL { "ALL" } // ALBANIA: Leck
        AM { "AMD" } // ARMENIA: Armenian Dram
        AN { "ANG" } // NETHERLANDS ANTILLES: Netherlands Antillan Guilder
        AO { "AOA" } // ANGOLA: Kwanza
        AR { "ARS" } // ARGENTINA: Argentine Peso
        AS { "USD" } // AMERICAN SAMOA: US Dollar
        AT { "EUR" } // AUSTRIA: Euro
        AT_PREEURO { "ATS" }
        AU { "AUD" } // AUSTRALIA: Australian Dollar
        AW { "AWG" } // ARUBA: Aruban Guilder
        AX { "EUR" } // Aland Islands: Euro
        AZ { "AZN" } // AZERBAIJAN: Azerbaijanian Manat
        BA { "BAM" } // BOSNIA AND HERZEGOVINA: Convertible Marks
        BB { "BBD" } // BARBADOS: Barbados Dollar
        BD { "BDT" } // BANGLADESH: Taka
        BE { "EUR" } // BELGIUM: Euro
        BE_PREEURO { "BEF" }
        BF { "XOF" } // BURKINA FASO: CFA Franc BCEAO
        BG { "BGN" } // BULGARIA: Bulgarian Lev
        BH { "BHD" } // BAHRAIN: Bahraini Dinar
        BI { "BIF" } // BURUNDI: Burundi Franc
        BJ { "XOF" } // BENIN: CFA Franc BCEAO
        BM { "BMD" } // BERMUDA: Bermudian Dollar
        BN { "BND" } // BRUNEI DARUSSALAM: Brunei Dollar
        BO { "BOB" } // BOLIVIA: Boliviano
        BR { "BRL" } // BRAZIL: Brazilian Real
        BS { "BSD" } // BAHAMAS: Bahamian Dollar
        BV { "NOK" } // BOUVET ISLAND: Norwegian Krone
        BW { "BWP" } // BOTSWANA: Pula
        BY { "BYR" } // BELARUS: Belarussian Ruble
        BZ { "BZD" } // BELIZE: Belize Dollar
        CA { "CAD" } // CANADA: Canadian Dollar
        CC { "AUD" } // COCOS (KEELING) ISLANDS: Australian Dollar
        CD { "CDF" } // CONGO, THE DEMOCRATIC REPUBLIC OF THE: Franc Congolais
        CF { "XAF" } // CENTRAL AFRICAN REPUBLIC: CFA Franc BEAC
        CG { "XAF" } // CONGO: CFA Franc BEAC
        CH { "CHF" } // SWITZERLAND: Swiss Franc
        CI { "XOF" } // COTE D'IVOIRE: CFA Franc BCEAO
        CK { "NZD" } // COOK ISLANDS: New Zealand Dollar
        CL { "CLP" } // CHILE: Chilean Peso
        CM { "XAF" } // CAMEROON: CFA Franc BEAC
        CN { "CNY" } // CHINA: Yuan Renminbi
        CO { "COP" } // COLOMBIA: Colombian Peso
        CR { "CRC" } // COSTA RICA: Costa Rican Colon
        CS { "EUR" } // MONTENEGRO: Euro
        CS_PREEURO { "CSD" } // SERBIA: Serbian Dinar
        CU { "CUP" } // CUBA: Cuban Peso
        CV { "CVE" } // CAPE VERDE: Cape Verde Escudo
        CX { "AUD" } // CHRISTMAS ISLAND: Australian Dollar
        CY { "EUR" } // CYPRUS: Euro
        CY_PREEURO { "CYP" } // CYPRUS: Cyprus Pound
        CZ { "CZK" } // CZECH REPUBLIC: Czech Koruna
        DE { "EUR" } // GERMANY: Euro
        DE_PREEURO { "DEM" }
        DJ { "DJF" } // DJIBOUTI: Djibouti Franc
        DK { "DKK" } // DENMARK: Danish Krone
        DM { "XCD" } // DOMINICA: East Caribbean Dollar
        DO { "DOP" } // DOMINICAN REPUBLIC: Dominican Peso
        DZ { "DZD" } // ALGERIA: Algerian Dinar
        EC { "USD" } // ECUADOR: US Dollar
        EE { "EEK" } // ESTONIA: Kroon
        EG { "EGP" } // EGYPT: Egyptian Pound
        EH { "MAD" } // WESTERN SAHARA: Moroccan Dirham
        ER { "ERN" } // ERITREA: Nakfa
        ES { "EUR" } // SPAIN: Euro
        ES_PREEURO { "ESP" }
        ET { "ETB" } // ETHIOPIA: Ethiopian Birr
        FI { "EUR" } // FINLAND: Euro
        FI_PREEURO { "FIM" }
        FJ { "FJD" } // FIJI: Fiji Dollar
        FK { "FKP" } // FALKLAND ISLANDS (MALVINAS): Falkland Islands Pound
        FM { "USD" } // MICRONESIA, FEDERATED STATES OF: US Dollar
        FO { "DKK" } // FAROE ISLANDS: Danish Krone
        FR { "EUR" } // FRANCE: Euro
        FR_PREEURO { "FRF" }
        GA { "XAF" } // GABON: CFA Franc BEAC
        GB { "GBP" } // UNITED KINGDOM: Pound Sterling
        GD { "XCD" } // GRENADA: East Caribbean Dollar
        GE { "GEL" } // GEORGIA: Lari
        GF { "EUR" } // FRENCH GUIANA: Euro
        GG { "GBP" } // GUERNSEY: Pound Sterling
        GH { "GHC" } // GHANA: Cedi
        GI { "GIP" } // GIBRALTAR: Gibraltar Pound
        GL { "DKK" } // GREENLAND: Danish Krone
        GM { "GMD" } // GAMBIA: Dalasi
        GN { "GNF" } // GUINEA: Guinea Franc
        GP { "EUR" } // GUADELOUPE: Euro
        GQ { "XAF" } // EQUATORIAL GUINEA: CFA Franc BEAC
        GR { "EUR" } // GREECE: Euro
        GR_PREEURO { "GRD" }
        GS { "GBP" } // SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS: British Pound
        GT { "GTQ" } // GUATEMALA: Quetzal
        GU { "USD" } // GUAM: US Dollar
        GW { "GWP" } // GUINEA-BISSAU: Guinea-Bissau Peso
        GY { "GYD" } // GUYANA: Guyana Dollar
        HK { "HKD" } // HONG KONG: Hong Kong Dollar
        HM { "AUD" } // HEARD ISLAND AND MCDONALD ISLANDS: Australian Dollar
        HN { "HNL" } // HONDURAS: Lempira
        HR { "HRK" } // CROATIA: Croatian kuna
        HT { "HTG" } // HAITI: Gourde
        HU { "HUF" } // HUNGARY: Forint
        ID { "IDR" } // INDONESIA: Rupiah
        IE { "EUR" } // IRELAND: Euro
        IE_PREEURO { "IEP" }
        IL { "ILS" } // ISRAEL: New Israeli Sheqel
        IM { "GBP" } // ISLE OF MAN: Pound Sterling
        IN { "INR" } // INDIA: Indian Rupee
        IO { "USD" } // BRITISH INDIAN OCEAN TERRITORY: US Dollar
        IQ { "IQD" } // IRAQ: Iraqi Dinar
        IR { "IRR" } // IRAN, ISLAMIC REPUBLIC OF: Iranian Rial
        IS { "ISK" } // ICELAND: Iceland Krona
        IT { "EUR" } // ITALY: Euro
        IT_PREEURO { "ITL" }
        JE { "GBP" } // JERSEY: Pound Sterling
        JM { "JMD" } // JAMAICA: Jamaican Dollar
        JO { "JOD" } // JORDAN: Jordanian Dinar
        JP { "JPY" } // JAPAN: Yen
        KE { "KES" } // KENYA: Kenyan Shilling
        KG { "KGS" } // KYRGYZSTAN: Som
        KH { "KHR" } // CAMBODIA: Riel
        KI { "AUD" } // KIRIBATI: Australian Dollar
        KM { "KMF" } // COMOROS: Comoro Franc
        KN { "XCD" } // SAINT KITTS AND NEVIS: East Caribbean Dollar
        KP { "KPW" } // KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF: North Korean Won
        KR { "KRW" } // KOREA, REPUBLIC OF: Won
        KW { "KWD" } // KUWAIT: Kuwaiti Dinar
        KY { "KYD" } // CAYMAN ISLANDS: Cayman Islands Dollar
        KZ { "KZT" } // KAZAKHSTAN: Tenge
        LA { "LAK" } // LAO PEOPLE'S DEMOCRATIC REPUBLIC: Kip
        LB { "LBP" } // LEBANON: Lebanese Pound
        LC { "XCD" } // SAINT LUCIA: East Caribbean Dollar
        LI { "CHF" } // LIECHTENSTEIN: Swiss Franc
        LK { "LKR" } // SRI LANKA: Sri Lanka Rupee
        LR { "LRD" } // LIBERIA: Liberian Dollar
        LS { "ZAR" } // LESOTHO: Rand
        LT { "LTL" } // LITHUANIA: Lithuanian Litas
        LU { "EUR" } // LUXEMBOURG: Euro
        LU_PREEURO { "LUF" }
        LV { "LVL" } // LATVIA: Latvian Lats
        LY { "LYD" } // LIBYAN ARAB JAMAHIRIYA: Lybian Dinar
        MA { "MAD" } // MOROCCO: Moroccan Dirham
        MC { "EUR" } // MONACO: Euro
        MD { "MDL" } // MOLDOVA, REPUBLIC OF: Moldovan Leu
        MG { "MGA" } // MADAGASCAR: Malagasy Ariary
        MH { "USD" } // MARSHALL ISLANDS: US Dollar
        MK { "MKD" } // MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF: Denar
        ML { "XOF" } // MALI: CFA Franc BCEAO
        MM { "MMK" } // MYANMAR: Kyat
        MN { "MNT" } // MONGOLIA: Tugrik
        MO { "MOP" } // MACAO: Pataca
        MP { "USD" } // NORTHERN MARIANA ISLANDS: US Dollar
        MQ { "EUR" } // MARTINIQUE: Euro
        MR { "MRO" } // MAURITANIA: Ouguiya
        MS { "XCD" } // MONTSERRAT: East Caribbean Dollar
        MT { "EUR" } // MALTA: Euro
        MT_PREEURO { "MTL" } // MALTA: Maltese Lira
        MU { "MUR" } // MAURITIUS: Mauritius Rupee
        MV { "MVR" } // MALDIVES: Rufiyaa
        MW { "MWK" } // MALAWI: Kwacha
        MX { "MXN" } // MEXICO: Mexican Peso
        MY { "MYR" } // MALAYSIA: Malaysian Ringgit
        MZ { "MZN" } // MOZAMBIQUE: Metical
        NA { "ZAR" } // NAMIBIA: Rand
        NC { "XPF" } // NEW CALEDONIA: CFP Franc
        NE { "XOF" } // NIGER: CFA Franc BCEAO
        NF { "AUD" } // NORFOLK ISLAND: Australian Dollar
        NG { "NGN" } // NIGERIA: Naira
        NI { "NIO" } // NICARAGUA: Cordoba Oro
        NL { "EUR" } // NETHERLANDS: Euro
        NL_PREEURO { "NLG" }
        NO { "NOK" } // NORWAY: Norwegian Krone
        NP { "NPR" } // NEPAL: Nepalese Rupee
        NR { "AUD" } // NAURU: Australian Dollar
        NU { "NZD" } // NIUE: New Zealand Dollar
        NZ { "NZD" } // NEW ZEALAND: New Zealand Dollar
        OM { "OMR" } // OMAN: Rial Omani
        PA { "PAB" } // PANAMA: Balboa
        PE { "PEN" } // PERU: Nuevo Sol
        PF { "XPF" } // FRENCH POLYNESIA: CFP Franc
        PG { "PGK" } // PAPUA NEW GUINEA: Kina
        PH { "PHP" } // PHILIPPINES: Philippine Peso
        PK { "PKR" } // PAKISTAN: Pakistan Rupee
        PL { "PLN" } // POLAND: Zloty
        PM { "EUR" } // SAINT PIERRE AND MIQUELON: Euro
        PN { "NZD" } // PITCAIRN: New Zealand Dollar
        PR { "USD" } // PUERTO RICO: US Dollar
        PT { "EUR" } // PORTUGAL: Euro
        PT_PREEURO { "PTE" }
        PW { "USD" } // PALAU: US Dollar
        PY { "PYG" } // PARAGUAY: Guarani
        QA { "QAR" } // QATAR: Qatari Rial
        RE { "EUR" } // REUNION: Euro
        RO { "RON" } // ROMANIA: Leu
        RS { "RSD" } // SERBIA: Dinar
        RU { "RUB" } // RUSSIAN FEDERATION: Russian Ruble
        RW { "RWF" } // RWANDA: Rwanda Franc
        SA { "SAR" } // SAUDI ARABIA: Saudi Riyal
        SB { "SBD" } // SOLOMON ISLANDS: Solomon Islands Dollar
        SC { "SCR" } // SEYCHELLES: Seychelles Rupee
        SD { "SDG" } // SUDAN: Sudanese Pound
        SE { "SEK" } // SWEDEN: Swedish Krona
        SG { "SGD" } // SINGAPORE: Singapore Dollar
        SH { "SHP" } // SAINT HELENA: Saint Helena Pound
        SI { "EUR" } // SLOVENIA: Euro
        SI_PREEURO { "SIT" } // SLOVENIA: Tolar
        SJ { "NOK" } // SVALBARD AND JAN MAYEN: Norwegian Krone
        SK { "SKK" } // SLOVAKIA: Slovak Koruna
        SL { "SLL" } // SIERRA LEONE: Leone
        SM { "EUR" } // SAN MARINO: Euro
        SN { "XOF" } // SENEGAL: CFA Franc BCEAO
        SO { "SOS" } // SOMALIA: Somali Shilling
        SR { "SRD" } // SURINAME: Surinam Dollar
        ST { "STD" } // SAO TOME AND PRINCIPE: Dobra
        SV { "SVC" } // EL SALVADOR: El Salvador Colon
        SY { "SYP" } // SYRIAN ARAB REPUBLIC: Syrian Pound
        SZ { "SZL" } // SWAZILAND: Lilangeni
        TC { "USD" } // TURKS AND CAICOS ISLANDS: US Dollar
        TD { "XAF" } // CHAD: CFA Franc BEAC
        TF { "EUR" } // FRENCH SOUTHERN TERRITORIES: Euro
        TG { "XOF" } // TOGO: CFA Franc BCEAO
        TH { "THB" } // THAILAND: Baht
        TJ { "TJS" } // TAJIKISTAN: Somoni
        TK { "NZD" } // TOKELAU: New Zealand Dollar
        TL { "USD" } // TIMOR-LESTE: US Dollar
        TM { "TMM" } // TURKMENISTAN: Manat
        TN { "TND" } // TUNISIA: Tunisian Dinar
        TO { "TOP" } // TONGA: Pa'anga
        TR { "TRY" } // TURKEY: Turkish Lira
        TT { "TTD" } // TRINIDAD AND TOBAGO: Trinidad and Tobago Dollar
        TV { "AUD" } // TUVALU: Australian Dollar
        TW { "TWD" } // TAIWAN, PROVINCE OF CHINA: New Taiwan Dollar
        TZ { "TZS" } // TANZANIA, UNITED REPUBLIC OF: Tanzanian Shilling
        UA { "UAH" } // UKRAINE: Hryvnia
        UG { "UGX" } // UGANDA: Uganda Shilling
        UM { "USD" } // UNITED STATES MINOR OUTLYING ISLANDS: US Dollar
        US { "USD" } // UNITED STATES: US Dollar
        UY { "UYU" } // URUGUAY: Peso Uruguayo
        UZ { "UZS" } // UZBEKISTAN: Uzbekistan Sum
        VA { "EUR" } // HOLY SEE (VATICAN CITY STATE): Euro
        VC { "XCD" } // SAINT VINCENT AND THE GRENADINES: East Caribbean Dollar
        VE { "VEB" } // VENEZUELA: Bolivar
        VG { "USD" } // VIRGIN ISLANDS, BRITISH: US Dollar
        VI { "USD" } // VIRGIN ISLANDS, U.S.: US Dollar
        VN { "VND" } // VIET NAM: Dong
        VU { "VUV" } // VANUATU: Vatu
        WF { "XPF" } // WALLIS AND FUTUNA: CFP Franc
        WS { "WST" } // SAMOA: Tala
        YE { "YER" } // YEMEN: Yemeni Rial
        YT { "EUR" } // MAYOTTE: Euro
        YU { "YUM" } // YUGOSLAVIA: Yugoslavian Dinar
        ZA { "ZAR" } // SOUTH AFRICA: Rand
        ZM { "ZMK" } // ZAMBIA: Kwacha
        ZW { "ZWD" } // ZIMBABWE: Zimbabwe Dollar
    }

  }
