# 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 = Dirham dos Emirados Árabes Unidos
AFA = Afeghani (1927–2002)|||1
AFN = Afegani do Afeganistão||0
ALL = lek albanês||0
AMD = Dram arménio||0
ARS = peso argentino
AWG = florim de Aruba
AZN = Manat do Azerbaijão
BAD = Dinar da Bósnia-Herzegóvina|||1
BAM = marco bósnio-herzegóvino conversível
BBD = dólar barbadense
BDT = Taka de Bangladesh
BEC = Franco belga (convertível)|||1
BGN = lev búlgaro
BHD = Dinar baremita||3
BMD = dólar bermudense
BND = Dólar bruneíno
BOB = boliviano
BRL = real brasileiro|R$
BSD = dólar das Bahamas
BTN = Ngultrum do Butão
BWP = Pula de Botswana
BYB = Rublo novo bielorusso (1994–1999)|||1
BYN = rublo bielorrusso
BZD = dólar belizense
CAD = dólar canadiano|CA$
CHF = franco suíço
CLP = peso chileno||0
CNH = yuan offshore|||1
CNY = yuan|CN¥
COP = peso colombiano||0
CRC = colon costa-riquenho
CUC = peso cubano conversível
CUP = peso cubano
CVE = escudo cabo-verdiano
CYP = Libra de Chipre|||1
CZK = coroa checa
DJF = Franco jibutiano||0
DKK = coroa dinamarquesa
DZD = dinar argelino
ECV = Unidad de Valor Constante (UVC) do Equador|||1
EGP = libra egípcia
EUR = euro|€
FJD = Dólar de Fiji
FKP = libra das Ilhas Falkland
GBP = libra esterlina britânica|£
GHC = Cedi do Gana|||1
GHS = Cedi de Gana
GIP = libra de Gibraltar
GMD = Dalasi da Gâmbia
GNF = Franco guineense||0
GTQ = quetzal da Guatemala
GYD = dólar da Guiana||0
HNL = lempira das Honduras
HRK = kuna croata
HUF = forint húngaro
ISK = coroa islandesa||0
KGS = Som do Quirguistão
KYD = Dólar das Ilhas Caimão
KZT = Tenge do Cazaquistão
LAK = Kip de Laos||0
LKR = Rupia do Sri Lanka
LTL = Litas da Lituânia|||1
LUF = Franco luxemburguês|F|0|1
LVL = Lats da Letónia|||1
LYD = dinar líbio||3
MAD = dirham marroquino
MDL = leu moldavo
MGA = Ariari de Madagáscar||0
MKD = dinar macedónio
MLF = Franco do Mali|||1
MMK = Kyat de Mianmar||0
MNT = Tugrik da Mongólia||0
MOP = Pataca de Macau
MRO = Ouguiya da Mauritânia||0
MVR = Rupia das Ilhas Maldivas
MWK = Kwacha do Malawi
MXN = peso mexicano|MX$
MXP = Peso Plata mexicano (1861–1992)|||1
MXV = Unidad de Inversion (UDI) mexicana|||1
MZN = Metical de Moçambique
NAD = Dólar da Namíbia
NIC = Córdoba nicaraguano (1988–1991)|||1
NIO = córdoba nicaraguano
NOK = coroa norueguesa
OMR = Rial de Omã||3
PAB = balboa do Panamá
PEN = sol peruano
PGK = Kina da Papua-Nova Guiné
PLN = zloti polaco
PLZ = Zloti polaco (1950–1995)|||1
PTE = Escudo português|​||1
PYG = guarani paraguaio||0
QAR = Rial do Catar
RON = leu romeno
RSD = dinar sérvio||0
RUB = rublo russo
SAR = Rial saudita
SDG = libra sudanesa
SEK = coroa sueca
SGD = Dólar de Singapura
SOS = Xelim somali||0
SRD = dólar do Suriname
SZL = Lilangeni da Suazilândia
THB = Baht da Tailândia|฿
TJS = Somoni do Tajaquistão
TMT = Manat do Turquemenistão
TND = dinar tunisino||3
TOP = Paʻanga de Tonga
TTD = Dólar de Trindade e Tobago
UAH = hryvnia ucraniano
USD = dólar dos Estados Unidos|US$
UYU = peso uruguaio
UZS = Som do Uzbequistão||0
VEF = bolívar
VUV = Vatu de Vanuatu||0
XAF = Franco CFA (BEAC)|FCFA|0
XCD = Dólar das Caraíbas Orientais|EC$
XEU = Unidade da Moeda Europeia|||1
XOF = franco CFA (BCEAO)|CFA|0
XXX = moeda desconhecida|||1
YUD = Dinar forte jugoslavo|||1
YUM = Super Dinar jugoslavo|||1
YUN = Dinar conversível jugoslavo|||1
ZMK = Kwacha zambiano (1968–2012)||0|1
ZWD = Dólar do Zimbabwe||0|1
