# 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 = Apvienoto Arābu Emirātu dirhēms
AFN = Afganistānas afgāns||0
ALL = Albānijas leks||0
AMD = Armēnijas drams
ANG = Nīderlandes Antiļu guldenis
AOA = Angolas kvanza
ARS = Argentīnas peso
ATS = Austrijas šiliņš|||1
AUD = Austrālijas dolārs|AU$
AWG = Arubas guldenis
AZM = Azerbaidžānas manats (1993–2006)|||1
AZN = Azerbaidžānas manats
BAM = Bosnijas un Hercogovinas konvertējamā marka
BBD = Barbadosas dolārs
BDT = Bangladešas taka
BEF = Beļģijas franks|||1
BGN = Bulgārijas leva
BHD = Bahreinas dinārs||3
BIF = Burundi franks||0
BMD = Bermudu dolārs
BND = Brunejas dolārs
BOB = Bolīvijas boliviano
BRL = Brazīlijas reāls|R$
BSD = Bahamu dolārs
BTN = Butānas ngultrums
BWP = Botsvanas pula
BYN = Baltkrievijas rubelis
BYR = Baltkrievijas rubelis (2000–2016)||0|1
BZD = Belizas dolārs
CAD = Kanādas dolārs|CA$
CDF = KDR franks
CHF = Šveices franks
CLP = Čīles peso||0
CNH = Ķīnas juaņa (ofšors)|||1
CNY = Ķīnas juaņs|CN¥
COP = Kolumbijas peso
COU = Kolumbijas reāls|||1
CRC = Kostarikas kolons
CUC = Kubas konvertējamais peso
CUP = Kubas peso
CVE = Kaboverdes eskudo
CYP = Kipras mārciņa|||1
CZK = Čehijas krona
DEM = Vācijas marka|||1
DJF = Džibutijas franks||0
DKK = Dānijas krona
DOP = Dominikānas peso
DZD = Alžīrijas dinārs
EEK = Igaunijas krona|||1
EGP = Ēģiptes mārciņa
ERN = Eritrejas nakfa
ESP = Spānijas peseta||0|1
ETB = Etiopijas birs
EUR = eiro|€
FIM = Somijas marka|||1
FJD = Fidži dolārs
FKP = Folklenda Salu mārciņa
FRF = Francijas franks|||1
GBP = Lielbritānijas mārciņa|£
GEL = Gruzijas lari|₾
GHS = Ganas sedi
GIP = Gibraltāra mārciņa
GMD = Gambijas dalasi
GNF = Gvinejas franks||0
GRD = Grieķijas drahma|||1
GTQ = Gvatemalas ketsals
GYD = Gajānas dolārs
HKD = Honkongas dolārs|HK$
HNL = Hondurasas lempīra
HRK = Horvātijas kuna
HTG = Haiti gurds
HUF = Ungārijas forints
IDR = Indonēzijas rūpija
IEP = Īrijas mārciņa|||1
ILS = Izraēlas šekelis|₪
INR = Indijas rūpija|₹
IQD = Irākas dinārs||0
IRR = Irānas riāls||0
ISK = Islandes krona||0
ITL = Itālijas lira||0|1
JMD = Jamaikas dolārs
JOD = Jordānas dinārs||3
JPY = Japānas jena|¥|0
KES = Kenijas šiliņš
KGS = Kirgizstānas soms
KHR = Kambodžas riels
KMF = Komoru franks||0
KPW = Ziemeļkorejas vona||0
KRW = Dienvidkorejas vona|₩|0
KWD = Kuveitas dinārs||3
KYD = Kaimanu salu dolārs
KZT = Kazahstānas tenge
LAK = Laosas kips||0
LBP = Libānas mārciņa||0
LKR = Šrilankas rūpija
LRD = Libērijas dolārs
LSL = Lesoto loti
LTL = Lietuvas lits|||1
LUF = Luksemburgas franks||0|1
LVL = Latvijas lats|Ls||1
LVR = Latvijas rublis|||1
LYD = Lībijas dinārs||3
MAD = Marokas dirhēms
MDL = Moldovas leja
MGA = Madagaskaras ariari||0
MKD = Maķedonijas denārs
MLF = CFA (Āfrikas) franks|||1
MMK = Mjanmas kjats||0
MNT = Mongolijas tugriks
MOP = Makao pataka
MRO = Mauritānijas ugija (1973–2017)||0|1
MRU = Mauritānijas ugija
MTL = Maltas lira|||1
MTP = Maltas mārciņa|||1
MUR = Maurīcijas rūpija
MVR = Maldīvijas rūfija
MWK = Malāvijas kvača
MXN = Meksikas peso|MX$
MYR = Malaizijas ringits
MZE = Mozambikas eskudo|||1
MZM = Mozambikas vecais metikals|||1
MZN = Mozambikas metikals
NAD = Namībijas dolārs
NGN = Nigērijas naira
NIO = Nikaragvas kordoba
NLG = Nīderlandes guldenis|||1
NOK = Norvēģijas krona
NPR = Nepālas rūpija
NZD = Jaunzēlandes dolārs|NZ$
OMR = Omānas riāls||3
PAB = Panamas balboa
PEN = Peru sols
PGK = Papua-Jaungvinejas kina
PHP = Filipīnu peso
PKR = Pakistānas rūpija
PLN = Polijas zlots
PTE = Portugāles eskudo|||1
PYG = Paragvajas guarani||0
QAR = Kataras riāls
ROL = Rumānijas vecā leja|||1
RON = Rumānijas leja
RSD = Serbijas dinārs||0
RUB = Krievijas rublis
RWF = Ruandas franks||0
SAR = Saūda Arābijas riāls
SBD = Zālamana Salu dolārs
SCR = Seišelu salu rūpija
SDG = Sudānas mārciņa
SEK = Zviedrijas krona
SGD = Singapūras dolārs
SHP = Sv.Helēnas salas mārciņa
SIT = Slovēnijas tolars|||1
SKK = Slovakijas krona|||1
SLL = Sjerraleones leone||0
SOS = Somālijas šiliņš||0
SRD = Surinamas dolārs
SRG = Surinamas guldenis|||1
SSP = Dienvidsudānas mārciņa
STD = Santome un Prinsipi dobra (1977–2017)||0|1
STN = Santome un Prinsipi dobra
SVC = Salvadoras kolons|||1
SYP = Sīrijas mārciņa||0
SZL = Svazilendas lilangeni
THB = Taizemes bāts|฿
TJS = Tadžikistānas somons
TMM = Turkmenistānas manats (1993–2009)||0|1
TMT = Turkmenistānas manats
TND = Tunisijas dinārs||3
TOP = Tongas paanga
TRL = Turcijas lira (1922–2005)||0|1
TRY = Turcijas lira|TL
TTD = Trinidādas un Tobāgo dolārs
TWD = Taivānas jaunais dolārs|NT$
TZS = Tanzānijas šiliņš
UAH = Ukrainas grivna
UGX = Ugandas šiliņš||0
USD = ASV dolārs|$
UYU = Urugvajas peso
UZS = Uzbekistānas sums
VEB = Venecuēlas bolivārs (1871–2008)|||1
VEF = Venecuēlas bolivārs (2008–2018)|||1
VES = Venecuēlas bolivārs
VND = Vjetnamas dongi|₫|0
VUV = Vanuatu vatu||0
WST = Samoa tala
XAF = Centrālāfrikas CFA franks|FCFA|0
XAG = sudrabs|||1
XAU = zelts|||1
XBA = Eiropas norēķinu vienība EURCO|||1
XBB = Eiropas naudas vienība|||1
XBC = Eiropas norēķinu vienība (XBC)|||1
XBD = Eiropas norēķinu vienība (XBD)|||1
XCD = Austrumkarību dolārs|EC$
XDR = Speciālās aizņēmuma tiesības|||1
XEU = Eiropas norēķinu vienība|||1
XFO = Francijas zelta franks|||1
XFU = Francijas UIC franks|||1
XOF = Rietumāfrikas CFA franks|CFA|0
XPD = pallādijs|||1
XPF = CFP franks|CFPF|0
XPT = platīns|||1
XTS = Testa valūtas kods|||1
XXX = Nezināma valūta|¤||1
YER = Jemenas riāls||0
ZAR = Dienvidāfrikas rends
ZMK = Zambijas kvača (1968–2012)||0|1
ZMW = Zambijas kvača
ZWD = Zimbabves dolārs||0|1
ZWL = Zimbabves dolārs (2009)|||1
