# © 2016 and later: Unicode, Inc. and others.
# License & terms of use: http://www.unicode.org/copyright.html#License
REGION_CLDR_VERSION = %version%
# A list of txt's to build
# Note:
#
#   If you are thinking of modifying this file, READ THIS.
#
# Instead of changing this file [unless you want to check it back in],
# you should consider creating a '%local%' file in this same directory.
# Then, you can have your local changes remain even if you upgrade or
# reconfigure ICU.
#
# Example '%local%' files:
#
#  * To add an additional locale to the list:
#    _____________________________________________________
#    |  REGION_SOURCE_LOCAL =   myLocale.txt ...
#
#  * To REPLACE the default list and only build with a few
#    locales:
#    _____________________________________________________
#    |  REGION_SOURCE = ar.txt ar_AE.txt en.txt de.txt zh.txt
#
#
# Generated by LDML2ICUConverter, from LDML source files.

# Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)
REGION_SYNTHETIC_ALIAS = az_AZ.txt az_Latn_AZ.txt bs_BA.txt bs_Latn_BA.txt\
 en_NH.txt en_RH.txt fil_PH.txt he_IL.txt id_ID.txt\
 in.txt in_ID.txt iw.txt iw_IL.txt ja_JP.txt\
 ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt nn_NO.txt no.txt\
 no_NO.txt no_NO_NY.txt pa_Arab_PK.txt pa_Guru_IN.txt pa_IN.txt\
 pa_PK.txt sh.txt sh_BA.txt sh_CS.txt sh_YU.txt\
 shi_MA.txt shi_Tfng_MA.txt sr_BA.txt sr_CS.txt sr_Cyrl_CS.txt\
 sr_Cyrl_RS.txt sr_Cyrl_YU.txt sr_Latn_CS.txt sr_Latn_RS.txt sr_Latn_YU.txt\
 sr_ME.txt sr_RS.txt sr_XK.txt sr_YU.txt th_TH.txt\
 th_TH_TRADITIONAL.txt tl.txt tl_PH.txt uz_AF.txt uz_Arab_AF.txt\
 uz_Latn_UZ.txt uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt zh_CN.txt\
 zh_HK.txt zh_Hans_CN.txt zh_Hans_SG.txt zh_Hant_TW.txt zh_MO.txt\
 zh_SG.txt zh_TW.txt


# All aliases (to not be included under 'installed'), but not including root.
REGION_ALIAS_SOURCE = $(REGION_SYNTHETIC_ALIAS)


# Ordinary resources
REGION_SOURCE = af.txt agq.txt ak.txt am.txt\
 ar.txt ar_AE.txt ar_LY.txt ar_SA.txt as.txt\
 asa.txt ast.txt az.txt az_Cyrl.txt az_Latn.txt\
 bas.txt be.txt bem.txt bez.txt bg.txt\
 bm.txt bn.txt bn_IN.txt bo.txt bo_IN.txt\
 br.txt brx.txt bs.txt bs_Cyrl.txt bs_Latn.txt\
 ca.txt ce.txt cgg.txt chr.txt cs.txt\
 cy.txt da.txt dav.txt de.txt de_AT.txt\
 de_CH.txt dje.txt dsb.txt dua.txt dyo.txt\
 dz.txt ebu.txt ee.txt el.txt en.txt\
 en_150.txt en_AG.txt en_AI.txt en_AT.txt en_AU.txt\
 en_BB.txt en_BE.txt en_BM.txt en_BS.txt en_BW.txt\
 en_BZ.txt en_CA.txt en_CC.txt en_CH.txt en_CK.txt\
 en_CM.txt en_CX.txt en_CY.txt en_DE.txt en_DG.txt\
 en_DK.txt en_DM.txt en_ER.txt en_FI.txt en_FJ.txt\
 en_FK.txt en_FM.txt en_GB.txt en_GD.txt en_GG.txt\
 en_GH.txt en_GI.txt en_GM.txt en_GY.txt en_HK.txt\
 en_IE.txt en_IL.txt en_IM.txt en_IN.txt en_IO.txt\
 en_JE.txt en_JM.txt en_KE.txt en_KI.txt en_KN.txt\
 en_KY.txt en_LC.txt en_LR.txt en_LS.txt en_MG.txt\
 en_MO.txt en_MS.txt en_MT.txt en_MU.txt en_MW.txt\
 en_MY.txt en_NA.txt en_NF.txt en_NG.txt en_NL.txt\
 en_NR.txt en_NU.txt en_NZ.txt en_PG.txt en_PH.txt\
 en_PK.txt en_PN.txt en_PW.txt en_RW.txt en_SB.txt\
 en_SC.txt en_SD.txt en_SE.txt en_SG.txt en_SH.txt\
 en_SI.txt en_SL.txt en_SS.txt en_SX.txt en_SZ.txt\
 en_TC.txt en_TK.txt en_TO.txt en_TT.txt en_TV.txt\
 en_TZ.txt en_UG.txt en_VC.txt en_VG.txt en_VU.txt\
 en_WS.txt en_ZA.txt en_ZM.txt en_ZW.txt eo.txt\
 es.txt es_419.txt es_AR.txt es_BO.txt es_CL.txt\
 es_CO.txt es_CR.txt es_CU.txt es_DO.txt es_EC.txt\
 es_GT.txt es_HN.txt es_MX.txt es_NI.txt es_PA.txt\
 es_PE.txt es_PR.txt es_PY.txt es_SV.txt es_US.txt\
 es_UY.txt es_VE.txt et.txt eu.txt ewo.txt\
 fa.txt fa_AF.txt ff.txt fi.txt fil.txt\
 fo.txt fr.txt fr_BE.txt fr_CA.txt fur.txt\
 fy.txt ga.txt gd.txt gl.txt gsw.txt\
 gu.txt guz.txt gv.txt ha.txt haw.txt\
 he.txt hi.txt hr.txt hsb.txt hu.txt\
 hy.txt id.txt ig.txt ii.txt is.txt\
 it.txt ja.txt jgo.txt jmc.txt ka.txt\
 kab.txt kam.txt kde.txt kea.txt khq.txt\
 ki.txt kk.txt kkj.txt kl.txt kln.txt\
 km.txt kn.txt ko.txt ko_KP.txt kok.txt\
 ks.txt ksb.txt ksf.txt ksh.txt kw.txt\
 ky.txt lag.txt lb.txt lg.txt lkt.txt\
 ln.txt lo.txt lrc.txt lt.txt lu.txt\
 luo.txt luy.txt lv.txt mas.txt mer.txt\
 mfe.txt mg.txt mgh.txt mgo.txt mk.txt\
 ml.txt mn.txt mr.txt ms.txt mt.txt\
 mua.txt my.txt mzn.txt naq.txt nb.txt\
 nd.txt ne.txt nl.txt nmg.txt nn.txt\
 nnh.txt nus.txt nyn.txt om.txt or.txt\
 os.txt pa.txt pa_Arab.txt pa_Guru.txt pl.txt\
 ps.txt pt.txt pt_AO.txt pt_CV.txt pt_GW.txt\
 pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt pt_TL.txt\
 qu.txt rm.txt rn.txt ro.txt ro_MD.txt\
 rof.txt ru.txt ru_UA.txt rw.txt rwk.txt\
 sah.txt saq.txt sbp.txt se.txt se_FI.txt\
 seh.txt ses.txt sg.txt shi.txt shi_Latn.txt\
 shi_Tfng.txt si.txt sk.txt sl.txt smn.txt\
 sn.txt so.txt sq.txt sr.txt sr_Cyrl.txt\
 sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_XK.txt sr_Latn.txt sr_Latn_BA.txt\
 sr_Latn_ME.txt sr_Latn_XK.txt sv.txt sw.txt sw_CD.txt\
 sw_KE.txt ta.txt te.txt teo.txt th.txt\
 ti.txt to.txt tr.txt twq.txt tzm.txt\
 ug.txt uk.txt ur.txt ur_IN.txt uz.txt\
 uz_Arab.txt uz_Cyrl.txt uz_Latn.txt vai.txt vai_Latn.txt\
 vai_Vaii.txt vi.txt vun.txt wae.txt xog.txt\
 yav.txt yi.txt yo.txt yo_BJ.txt yue.txt\
 zgh.txt zh.txt zh_Hans.txt zh_Hant.txt zh_Hant_HK.txt\
 zh_Hant_MO.txt zu.txt

