# Copyright 2014 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=25
#  date=$Date: 2014-03-10 19:02:01 +0100 (Mon, 10 Mar 2014) $
#  number=$Revision: 9914 $
#  type=Arab
AFN = افغانی|؋|0
ANG = ANG
ARS = ARS
AUD = AUD|$
AWG = AWG
BBD = BBD
BMD = BMD|$
BOB = BOB
BRL = BRL|R$
BSD = BSD|$
BZD = BZD|$
CAD = CAD|CA$
CHF = CHF
CLP = CLP|$|0
CNY = CNY|¥
COP = COP||0
CRC = CRC||0
CUC = CUC
CUP = CUP|$
DKK = DKK
DOP = DOP|$
DZD = DZD
EGP = EGP
EUR = EUR|€
FKP = FKP
GBP = GBP|£
GTQ = GTQ
GYD = GYD||0
HKD = HKD|$
HNL = HNL
HTG = HTG
IDR = IDR||0
INR = INR|Rs.
JMD = JMD
JPY = JPY|¥|0
KRW = KRW|₩|0
KYD = KYD|$
LYD = LYD||3
MAD = MAD
MXN = MXN|$
NIO = NIO
NOK = NOK
PAB = PAB
PEN = PEN
PLN = PLN
PYG = PYG|₲|0
RUB = RUB
SAR = SAR
SEK = SEK
SRD = SRD
THB = THB|฿
TRY = TRY
TTD = TTD|$
TWD = TWD|NT$
USD = USD|$
UYU = UYU
UZS = UZS||0
VEF = VEF
XCD = XCD|EC$
XXX = XXX|||1
ZAR = ZAR
