# 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: 6546 $
#  type=root
#  date=$Date: 2012-02-07 13:32:35 -0500 (Tue, 07 Feb 2012) $

AED = Ɛmirete Arab Nkabɔmu Deram
AOA = Angola Kwanza
AUD = Ɔstrelia Dɔla|AU$
BHD = Baren Dina||3
BIF = Burundi Frank||0
BWP = Botswana Pula
CAD = Kanada Dɔla|CA$
CDF = Kongo Frank
CHF = Sweden Frank||||5
CNY = Yuan|CN¥
CVE = Ɛskudo
DJF = Gyebuti Frank||0
DZD = Ɔlgyeria Dina
EGP = Egypt Pɔn
ERN = Ɛretereya Nakfa
ETB = Itiopia Bir
EUR = Iro|€
GBP = Breten Pɔn|UK£
GHC = Ghana Sidi|||1
GMD = Gambia Dalasi
GNS = Gini Frank|||1
INR = India Rupi|Rs.
JPY = Gyapan Yɛn|JP¥|0
KES = Kenya Hyelen
KMF = Komoro Frank||0
LRD = Laeberia Dɔla
LSL = Lesoto Loti
LYD = Libya Dina||3
MAD = Moroko Diram
MGA = Madagasi Frank||0
MRO = Mɔretenia Ouguiya||0
MUR = Mɔrehyeɔs Rupi||0
MWK = Malawi Kwacha
MZM = Mozambik Metical|||1
NAD = Namibia Dɔla
NGN = Naegyeria Naira
RWF = Rewanda Frank||0
SAR = Saudi Riyal
SCR = Seyhyɛls Rupi
SDG = Sudan Dina
SDP = Sudan Pɔn|||1
SHP = St Helena Pɔn
SLL = Leone||0
SOS = Somailia Hyelen||0
STD = Sao Tome ne Principe Dobra||0
SZL = Lilangeni
TND = Tunisia Dina||3
TZS = Tanzania Hyelen||0
UGX = Uganda Hyelen||0
USD = Amɛrika Dɔla|US$
XAF = Sefa|FCFA|0
ZAR = Afrika Anaafo Rand
ZMK = Zambia Kwacha||0
ZWD = Zimbabwe Dɔla||0|1
