# 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.

#
# The key is an ISO4217 currency code, and the value is of the form:
#   display name|symbol|decimal digits|not-used-flag|rounding
# If a symbol is not supplied, the currency code will be used
# If # of decimal digits is omitted, 2 is used
# If a currency is not generally used, not-used-flag=1
# If a currency should be rounded to a multiple of of the least significant
#   digit, rounding will be present
# Trailing empty fields can be omitted

# DO NOT EDIT - GENERATED FROM CLDR DATA
AED = United Arab Emirates Dirham
AFN = Afghan Afghani||0
ALL = Albanian Lek||0
AMD = Armenian Dram||0
ANG = Antillean Guilder ng Netherlands
AOA = Angolan Kwanza
ARS = Piso ng Argentina
AUD = Dolyar ng Australya|A$
AWG = Florin ng Aruba
AZN = Azerbaijani Manat
BAM = Bosnia-Herzegovina Convertible Mark
BBD = Dolyar ng Barbados
BDT = Bangladeshi Taka
BGN = Bulgarian Lev
BHD = Bahraini Dinar||3
BIF = Burundian Franc||0
BMD = Dolyar ng Bermuda
BND = Dolyar ng Brunei
BOB = Boliviano ng Bolivia
BRL = Real ng Barzil|R$
BSD = Dolyar ng Bahamas
BTN = Bhutanese Ngultrum
BWP = Botswanan Pula
BYN = Belarusian Ruble
BYR = Belarusian Ruble (2000–2016)||0|1
BZD = Dolyar ng Belize
CAD = Dolyar ng Canada|CA$
CDF = Congolese Franc
CHF = Swiss Franc
CLP = Piso ng Chile||0
CNY = Chinese Yuan|CN¥
COP = Piso ng Colombia||0
CRC = Colón ng Costa Rica
CUC = Convertible na Piso ng Cuba
CUP = Piso ng Cuba
CVE = Cape Verdean Escudo
CZK = Czech Republic Koruna
DEM = Deutsche Marks|||1
DJF = Djiboutian Franc||0
DKK = Danish Krone
DOP = Piso ng Dominican
DZD = Algerian Dinar
EEK = Estonian Kroon|||1
EGP = Egyptian Pound
ERN = Eritrean Nakfa
ETB = Ethiopian Birr
EUR = Euro|€
FJD = Dolyar ng Fiji
FKP = Pound ng Falkland Islands
FRF = French Franc|||1
GBP = British Pound|£
GEL = Georgian Lari|₾
GHS = Ghanaian Cedi
GIP = Gibraltar Pound
GMD = Gambian Dalasi
GNF = Guinean Franc||0
GTQ = Quetzal ng Guatemala
GYD = Dolyar ng Guyanese||0
HKD = Dolyar ng Hong Kong|HK$
HNL = Lempira ng Honduras
HRK = Croatian Kuna
HTG = Gourde ng Haiti
HUF = Hungarian Forint
IDR = Indonesian Rupiah||0
ILS = Israeli New Sheqel|₪
INR = Indian Rupee|₹
IQD = Iraqi Dinar||0
IRR = Iranian Rial||0
ISK = Icelandic Króna||0
JMD = Dolyar ng Jamaica
JOD = Jordanian Dinar||3
JPY = Japanese Yen|¥|0
KES = Kenyan Shilling
KGS = Kyrgystani Som
KHR = Cambodian Riel
KMF = Comorian Franc||0
KPW = Won ng Hilagang Korea||0
KRW = Won ng Timog Korea|₩|0
KWD = Kuwaiti Dinar||3
KYD = Dolyar ng Cayman Islands
KZT = Kazakhstani Tenge
LAK = Laotian Kip||0
LBP = Pound ng Lebanon||0
LKR = Sri Lankan Rupee
LRD = Dolyar ng Liberia
LSL = Lesotho Loti
LTL = Lithuanian Litas|||1
LVL = Latvian Lats|||1
LYD = Libyan Dinar||3
MAD = Moroccan Dirham
MDL = Moldovan Leu
MGA = Malagasy Ariary||0
MKD = Macedonian Denar
MMK = Myanmar Kyat||0
MNT = Mongolian Tugrik||0
MOP = Macanese Pataca
MRO = Mauritanian Ouguiya||0
MUR = Mauritian Rupee||0
MVR = Maldivian Rufiyaa
MWK = Malawian Kwacha
MXN = Piso ng Mexico|MX$
MYR = Malaysian Ringgit
MZN = Mozambican Metical
NAD = Dolyar ng Namibia
NGN = Nigerian Naira
NIO = Córdoba ng Nicaragua
NOK = Norwegian Krone
NPR = Nepalese Rupee
NZD = Dolyar ng New Zealand|NZ$
OMR = Omani Rial||3
PAB = Balboa ng Panama
PEN = Peruvian Sol
PGK = Papua New Guinean Kina
PHP = Piso ng Pilipinas|₱
PKR = Pakistani Rupee||0
PLN = Polish Zloty
PYG = Paraguayan Guarani||0
QAR = Qatari Rial
RON = Romanian Leu
RSD = Serbian Dinar||0
RUB = Russian Ruble
RWF = Rwandan Franc||0
SAR = Saudi Riyal
SBD = Dolyar ng Solomon Islands
SCR = Seychellois Rupee
SDG = Pound ng Sudan
SEK = Swedish Krona
SGD = Dolyar ng Singapore
SHP = Saint Helena Pound
SIT = Slovenian Tolar|||1
SKK = Slovak Koruna|||1
SLL = Sierra Leonean Leone||0
SOS = Somali Shilling||0
SRD = Dolyar ng Suriname
SSP = Pound ng Timog Sudan
STD = São Tomé & Príncipe Dobra||0|1
SYP = Syrian Pound||0
SZL = Swazi Lilangeni
THB = Thai Baht|฿
TJS = Tajikistani Somoni
TMT = Turkmenistani Manat
TND = Tunisian Dinar||3
TOP = Tongan Paʻanga
TRY = Turkish Lira|TL
TTD = Dolyar ng Trinidad and Tobago
TWD = Dolyar ng New Taiwan|NT$
TZS = Tanzanian Shilling||0
UAH = Ukrainian Hryvnia
UGX = Ugandan Shilling||0
USD = Dolyar ng US|$
UYU = Piso ng Uruguay
UZS = Uzbekistan Som||0
VEB = Venezuelan Bolívar (1871–2008)|||1
VEF = Bolívar ng Venezuela
VND = Vietnamese Dong|₫|0
VUV = Vanuatu Vatu||0
WST = Samoan Tala
XAF = CFA Franc BEAC|FCFA|0
XCD = Dolyar ng Silangang Caribbean|EC$
XOF = CFA Franc ng Kanlurang Africa|CFA|0
XPF = CFP Franc|CFPF|0
XXX = Hindi Kilalang Pera|||1
YER = Yemeni Rial||0
ZAR = Rand ng Timog Africa
ZMK = Zambian Kwacha (1968–2012)||0|1
ZMW = Zambian Kwacha
