# 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
AMD = Dram armen||0
ARS = Peso argjentin
ATS = Selin austriac|||1
AUD = dolar australian|A$
BEF = Franc de Belgjiche|||1
BIF = Franc burundês||0
BND = Dolar dal Brunei
BRL = real brasilian|R$
BYN = Rubli bielorùs
BYR = Rubli bielorùs (2000–2016)||0|1
CAD = dolar canadês|CA$
CHF = franc svuizar
CNY = yuan cinês|CN¥
CSD = Vieri dinar serp|||1
CUP = Peso cuban
CZK = Corone de Republiche Ceche
DEM = Marc todesc|||1
DKK = corone danese
DZD = Dinar algerin
EUR = euro|€
FRF = Franc francês|||1
GBP = sterline britaniche|£
HKD = dolar di Hong Kong|HK$
HRD = Dinar cravuat|||1
HRK = Kuna cravuate
IDR = rupiah indonesiane||0
INR = rupie indiane|₹
IRR = Rial iranian||0
ITL = Lire taliane||0|1
JPY = yen gjaponês|JP¥|0
KRW = won de Coree dal Sud|₩|0
LVL = Lats leton|||1
MXN = peso messican|MX$
NAD = Dolar namibian
NIO = Córdoba oro nicaraguan
NOK = corone norvegjese
NZD = Dollar neozelandês|NZ$
PKR = Rupie pachistane||0
PLN = zloty polac
RSD = Dinar serp||0
RUB = rubli rus
SAR = riyal de Arabie Saudite
SEK = corone svedese
SIT = Talar sloven|||1
SKK = Corone slovache|||1
THB = baht tailandês
TRL = Viere Lire turche||0|1
TRY = lire turche|TL
TWD = gnûf dolar taiwanês|NT$
USD = dolar american|US$
USN = Dolar american (prossime zornade)|||1
USS = Dolar american (stesse zornade)|||1
XAG = Arint|||1
XAU = Aur|||1
XBA = Unitât composite europeane|||1
XBB = Unitât monetarie europeane|||1
XBC = Unitât di acont europeane (XBC)|||1
XBD = Unitât di acont europeane (XBD)|||1
XDR = Dirits speciâi di incas|||1
XFO = Franc aur francês|||1
XFU = Franc UIC francês|||1
XPD = Paladi|||1
XPT = Platin|||1
XRE = fonts RINET|||1
XTS = codiç di verifiche de monede|||1
XXX = Monede no valide o no cognossude|||1
ZAR = rand sudafrican
