// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

final int asciiZeroCodeUnit = '0'.codeUnitAt(0);

final Map<String, String> simpleCurrencySymbols = {
  'AFN': 'Af.',
  'TOP': r'T$',
  'MGA': 'Ar',
  'THB': '\u0e3f',
  'PAB': 'B/.',
  'ETB': 'Birr',
  'VEF': 'Bs',
  'BOB': 'Bs',
  'GHS': 'GHS',
  'CRC': '\u20a1',
  'NIO': r'C$',
  'GMD': 'GMD',
  'MKD': 'din',
  'BHD': 'din',
  'DZD': 'din',
  'IQD': 'din',
  'JOD': 'din',
  'KWD': 'din',
  'LYD': 'din',
  'RSD': 'din',
  'TND': 'din',
  'AED': 'dh',
  'MAD': 'dh',
  'STD': 'Db',
  'BSD': r'$',
  'FJD': r'$',
  'GYD': r'$',
  'KYD': r'$',
  'LRD': r'$',
  'SBD': r'$',
  'SRD': r'$',
  'AUD': r'$',
  'BBD': r'$',
  'BMD': r'$',
  'BND': r'$',
  'BZD': r'$',
  'CAD': r'$',
  'HKD': r'$',
  'JMD': r'$',
  'NAD': r'$',
  'NZD': r'$',
  'SGD': r'$',
  'TTD': r'$',
  'TWD': r'NT$',
  'USD': r'$',
  'XCD': r'$',
  'VND': '\u20ab',
  'AMD': 'Dram',
  'CVE': 'CVE',
  'EUR': '\u20ac',
  'AWG': 'Afl.',
  'HUF': 'Ft',
  'BIF': 'FBu',
  'CDF': 'FrCD',
  'CHF': 'CHF',
  'DJF': 'Fdj',
  'GNF': 'FG',
  'RWF': 'RF',
  'XOF': 'CFA',
  'XPF': 'FCFP',
  'KMF': 'CF',
  'XAF': 'FCFA',
  'HTG': 'HTG',
  'PYG': 'Gs',
  'UAH': '\u20b4',
  'PGK': 'PGK',
  'LAK': '\u20ad',
  'CZK': 'K\u010d',
  'SEK': 'kr',
  'ISK': 'kr',
  'DKK': 'kr',
  'NOK': 'kr',
  'HRK': 'kn',
  'MWK': 'MWK',
  'ZMK': 'ZWK',
  'AOA': 'Kz',
  'MMK': 'K',
  'GEL': 'GEL',
  'LVL': 'Ls',
  'ALL': 'Lek',
  'HNL': 'L',
  'SLL': 'SLL',
  'MDL': 'MDL',
  'RON': 'RON',
  'BGN': 'lev',
  'SZL': 'SZL',
  'TRY': 'TL',
  'LTL': 'Lt',
  'LSL': 'LSL',
  'AZN': 'man.',
  'BAM': 'KM',
  'MZN': 'MTn',
  'NGN': '\u20a6',
  'ERN': 'Nfk',
  'BTN': 'Nu.',
  'MRO': 'MRO',
  'MOP': 'MOP',
  'CUP': r'$',
  'CUC': r'$',
  'ARS': r'$',
  'CLF': 'UF',
  'CLP': r'$',
  'COP': r'$',
  'DOP': r'$',
  'MXN': r'$',
  'PHP': '\u20b1',
  'UYU': r'$',
  'FKP': '£',
  'GIP': '£',
  'SHP': '£',
  'EGP': 'E£',
  'LBP': 'L£',
  'SDG': 'SDG',
  'SSP': 'SSP',
  'GBP': '£',
  'SYP': '£',
  'BWP': 'P',
  'GTQ': 'Q',
  'ZAR': 'R',
  'BRL': r'R$',
  'OMR': 'Rial',
  'QAR': 'Rial',
  'YER': 'Rial',
  'IRR': 'Rial',
  'KHR': 'Riel',
  'MYR': 'RM',
  'SAR': 'Riyal',
  'BYR': 'BYR',
  'RUB': '\u20BD',
  'MUR': 'Rs',
  'SCR': 'SCR',
  'LKR': 'Rs',
  'NPR': 'Rs',
  'INR': '\u20b9',
  'PKR': 'Rs',
  'IDR': 'Rp',
  'ILS': '\u20aa',
  'KES': 'Ksh',
  'SOS': 'SOS',
  'TZS': 'TSh',
  'UGX': 'UGX',
  'PEN': 'S/',
  'KGS': 'KGS',
  'UZS': 'so\u02bcm',
  'TJS': 'Som',
  'BDT': '\u09f3',
  'WST': 'WST',
  'KZT': '\u20b8',
  'MNT': '\u20ae',
  'VUV': 'VUV',
  'KPW': '\u20a9',
  'KRW': '\u20a9',
  'JPY': '¥',
  'CNY': '¥',
  'PLN': 'z\u0142',
  'MVR': 'Rf',
  'NLG': 'NAf',
  'ZMW': 'ZK',
  'ANG': 'ƒ',
  'TMT': 'TMT',
};
