# 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:
#  cldrVersion=21.0
#  number=$Revision: 5798 $
#  date=$Date: 2011-05-02 02:05:34 -0400 (Mon, 02 May 2011) $
#  type=root

AED = Dirham dos Emirados Árabes Unidos
AFA = Afeghani (1927-2002)|||1
AFN = Afgani afegão||0
ANG = Florim das Antilhas Holandesas
AOA = Cuanza angolano|Kz
AWG = Florim de Aruba
BAD = Dinar da Bósnia-Herzegóvina|||1
BAM = Marco bósnio-herzegóvino conversível
BEC = Franco belga (convertível)|||1
BRL = Real brasileiro|BR$
BYB = Rublo novo bielorusso (1994-1999)|||1
CAD = Dólar canadiano|CA$
CYP = Libra de Chipre|||1
CZK = Coroa da República Checa
ECV = Unidad de Valor Constante (UVC) do Equador|||1
GHC = Cedi do Gana|||1
GMD = Dalasi da Gâmbia
GNF = Franco Guineense||0
GTQ = Quetzal da Guatemala
HNL = Lempira das Honduras
KWD = Dinar do Koweit||3
KYD = Dólar das Ilhas Caimão
MKD = Dinar Macedónio
MLF = Franco do Mali|||1
MWK = Cuacha do Malawi
MXP = Peso Plata mexicano (1861-1992)|||1
MXV = Unidad de Inversion (UDI) mexicana|||1
NIC = Córdoba nicaraguano|||1
NIO = Córdoba Ouro nicaraguano
PLN = Zloti polaco
PLZ = Zloti polaco (1950-1995)|||1
QAR = Rial do Catar
SGD = Dólar de Singapura
THB = Baht da Tailândia|฿
TZS = Xelim de Tanzânia||0
USD = Dólar dos Estados Unidos|US$
WST = Tala de Samoa Ocidental
XEU = Unidade da Moeda Europeia|||1
XXX = Moeda Desconhecida|||1
YUD = Dinar forte jugoslavo|||1
YUM = Super Dinar jugoslavo|||1
YUN = Dinar conversível jugoslavo|||1
ZWD = Dólar do Zimbabwe||0|1
