{"version":3,"file":"534.js","mappings":"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AAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,OA8DJD,EAAYE,aA5DZ,SAAsBC,GAClB,IAAIC,EAAMD,EAAME,UACZC,EAAQH,EAAMI,WACdC,EAAOL,EAAMM,cACbC,EAASJ,EAAQ,EACjBK,EAAQH,EACRE,EAAS,IACTC,GAAS,EACTD,GAAU,IAEd,IAAIE,EAAU9hB,KAAKyZ,MAAMoI,EAAQ,KAC7BE,EAAgBD,EAAU9hB,KAAKyZ,MAAMqI,EAAU,GAAM,EACrDE,EAAehiB,KAAKyZ,MAAM,QAAUoI,EAAQ,OAAS7hB,KAAKyZ,MAAM,SAAWmI,EAAS,IAAMN,EAAMS,EAAgB,KAGhHnpB,EAAIopB,GADRD,GADAD,EAAU9hB,KAAKyZ,OAAOuI,EAAe,YAAc,WACzBhiB,KAAKyZ,MAAMqI,EAAU,GAAM,GACd,KACnCjoB,EAAImG,KAAKyZ,OAAO7gB,EAAI,OAAS,QAC7BD,EAAIqH,KAAKyZ,MAAM,OAAS5f,GACxBooB,EAAYjiB,KAAKyZ,OAAO7gB,EAAID,GAAK,SACrC2oB,EAAO1oB,EAAID,EAAKqH,KAAKyZ,MAAM,QAAUwI,IACrCT,EAAQxhB,KAAKyZ,OAAO7gB,EAAID,GAAK,UACjB,KACRkB,GAAK,EACL2nB,GAAS,IAEbA,GAAS,EACTE,EAAO7nB,EAAI,KACX,IAAIqoB,EAAqBF,EAAe,KAEpCG,EAAQ,MAAS,GACjBC,EAAIJ,EAAe,QACnBK,EAAMriB,KAAKyZ,MAAM2I,EAAI,OACzBA,GAAQ,MAAQC,EAChB,IAAI9B,EAAIvgB,KAAKyZ,OAAO2I,EAAI,OAAUD,GAC9BG,EAAK,GAAKD,EAAM9B,EACpB6B,GAAQpiB,KAAKyZ,MAAM8G,EAAI4B,EAAQ,OAC/B,IAAII,EAAKviB,KAAKyZ,OAAO2I,EAAI,SAAW,MAEzB,KAAPG,IACAA,EAAK,IAIT,IAFA,IAAIC,EAAUJ,EAAIpiB,KAAKyZ,MAAM,QAAU8I,EAAK,IACxCnoB,EAAI,EACDA,EAAI+mB,EAAepnB,UAClBonB,EAAe/mB,GAAK8nB,GADM9nB,KAKlC,IAAIqoB,EAAMroB,EAAI,MACVsoB,EAAK1iB,KAAKyZ,OAAOgJ,EAAM,GAAK,IAC5BE,EAAQD,EAAK,EACbE,EAASH,EAAM,GAAKC,EACpBG,EAAQX,EAAqBf,EAAe/mB,EAAI,GAAK,EAMzD,OALKyoB,EAAQ,IAAI9oB,OAAS,IACtB8oB,EAAQL,EACRI,EAASL,EACTI,EAAQL,GAEL,CAAEZ,KAAMiB,EAAOnB,MAAOoB,EAAQE,KAAMD,EAC/C,EA2BA3B,EAAY6B,YAzBZ,SAAqBrB,EAAMF,EAAOF,GAC9B,IAOI0B,EALK1B,EAIQH,EAFD,IAJPO,EAGK,GACQ,GAHbF,EAGuB,GAClB,MACsB,GAAK,EAChB,KACrBY,EAAIpiB,KAAKyZ,MAAMuJ,EAAa,IAC5BC,EAAIjjB,KAAKyZ,OAAO2I,EAAI,YAAc,UAElCxpB,GADJqqB,EAAIb,EAAI,EAAIa,EAAIjjB,KAAKyZ,MAAMwJ,EAAI,IACnB,KACRppB,EAAImG,KAAKyZ,OAAO7gB,EAAI,OAAS,QAC7BD,EAAIqH,KAAKyZ,MAAM,OAAS5f,GACxBgE,EAAImC,KAAKyZ,OAAO7gB,EAAID,GAAK,SACzBuqB,EAAOtqB,EAAID,EAAIqH,KAAKyZ,MAAU,QAAJ5b,GAC1BslB,EAAStlB,GAAKA,EAAI,KAAO,GAAK,GAC9BulB,EAAQvpB,GAAKspB,EAAS,IAAM,KAAO,MAKvC,OAHIC,GAAS,GACTD,IAEG,IAAInL,KAAKoL,EAAQ,IAAM,EAAW,IAAMF,EACnD,CAEH,CAlLD,CAkLGhC,IAAgBA,EAAc,CAAC,G,mQC5KvBmC,EAAe,I,SAAI,GAInBC,GAAc,EAKdC,EAAW,CAAC,EAKZC,EAAiB,QAKjBC,EAAsB,MAC7BC,EAAS,CAAC,gBAAiB,cAoC3BC,EAAsC,WACtC,SAASA,EAAqBC,GACtBA,IACAxqB,KAAKyqB,QAAUD,EAEvB,CA2GA,OArGAD,EAAqBrqB,UAAUwqB,cAAgB,SAAUtpB,GACrD,OAAO,KAAWupB,WAAW3qB,KAAK4qB,aAAcxpB,GAAW,CAAEyT,KAAM,OAAQgW,SAAU,SAAWV,EACpG,EAMAI,EAAqBrqB,UAAU4qB,gBAAkB,SAAU1pB,GAOvD,OANIA,IAAYA,EAAQ2pB,WACpB3pB,EAAQ2pB,SAAWV,IAEnB,WAAcjpB,IAAYA,EAAQ4pB,SAClC5pB,EAAQ6pB,sBAAwB,GAE7B,IAAaC,gBAAgBlrB,KAAK4qB,aAAcxpB,GAAW,CAAC,EAAG+oB,EAC1E,EAMAI,EAAqBrqB,UAAUirB,cAAgB,SAAU/pB,GACrD,OAAO,IAAWgqB,WAAWprB,KAAK4qB,aAAcxpB,GAAW,CAAEypB,SAAU,QAAShW,KAAM,QAAUsV,EACpG,EAMAI,EAAqBrqB,UAAUmrB,gBAAkB,SAAUjqB,GAIvD,OAHI,WAAcA,IAAYA,EAAQ4pB,SAClC5pB,EAAQ6pB,sBAAwB,GAE7B,IAAaK,aAAatrB,KAAK4qB,aAAcxpB,GAAW,CAAE4pB,OAAQ,KAAOb,EACpF,EAOAI,EAAqBrqB,UAAUqrB,aAAe,SAAU/a,EAAOgb,GAC3D,OAAOxrB,KAAK8qB,gBAAgBU,EAArBxrB,CAA6BwQ,EACxC,EAOA+Z,EAAqBrqB,UAAUurB,WAAa,SAAUjb,EAAOgb,GACzD,OAAOxrB,KAAK0qB,cAAcc,EAAnBxrB,CAA2BwQ,EACtC,EAOA+Z,EAAqBrqB,UAAUwrB,UAAY,SAAUlb,EAAOgb,GACxD,OAAOxrB,KAAKmrB,cAAcK,EAAnBxrB,CAA2BwQ,EACtC,EAOA+Z,EAAqBrqB,UAAUyrB,YAAc,SAAUnb,EAAOgb,GAC1D,OAAOxrB,KAAKqrB,gBAAgBG,EAArBxrB,CAA6BwQ,EACxC,EAQA+Z,EAAqBrqB,UAAU0rB,eAAiB,SAAUJ,EAAQK,GAC9D,OAAO,IAASC,wBAAwB9rB,KAAK4qB,aAAcY,EAAQrB,EAAU0B,EACjF,EAOAtB,EAAqBrqB,UAAU6rB,iBAAmB,SAAUP,EAAQQ,GAChE,OAAO,IAASC,sBAAsBjsB,KAAK4qB,aAAcY,EAAQrB,EAAU6B,EAC/E,EAKAzB,EAAqBrqB,UAAUgsB,kBAAoB,WAC/C,OAAO,IAASC,YAAYnsB,KAAK4qB,aAAcT,EACnD,EACAI,EAAqBrqB,UAAU0qB,WAAa,WACxC,OAAO5qB,KAAKyqB,SAAWL,CAC3B,EACOG,CACX,CAjHyC,GAmKlC,SAAS6B,EAAiBhhB,EAAQyJ,GAErC,IAAIwX,EAAY,IAASC,eAAenC,EAAU/e,EAAQ,IAAI,GAAMkf,EAAO,IACvEiC,EAAa,IAASD,eAAenC,EAAU/e,EAAQ,IAAIkf,EAAO,IAClEkC,GAAY,QAAS,yBAA0BH,GAC/CI,GAAc,WAAa,QAAS,gBAAiBJ,IAAa,QAAS,wBAA0BG,EAAWH,GAChHK,EAAU,IAASC,iBAAiB9X,GAAQ,UAAW2X,EAAWH,GAAW,GACjF,OAAO,QAAOI,EAAa,IAASG,cAAcF,GAAS,EAAM,IAAI,GAAO,CAAE,cAAiB,IAASG,iBAAiBN,IAC7H,C,yEC/MWO,E,uDAxBAC,EAAuB,CAC9B,QAAS,CACL,EAAK,QACL,EAAK,kBACL,EAAK,yBACL,EAAK,2BACL,EAAK,eACL,EAAK,sBACL,EAAK,SACL,EAAK,SACL,EAAK,sCACL,EAAK,sCACL,EAAK,gCACL,EAAK,UACL,EAAK,WACL,EAAK,iCACL,EAAK,gCACL,EAAK,YACL,EAAK,eAOb,SAAWD,GAEPA,EAASE,kBAAoB,qHAC7BF,EAASG,YAAc,mHACvBH,EAASI,eAAiB,uBAC1B,IAAIC,EAAgB,SACpBL,EAASM,gBAAkB,IAC3B,IAAI9C,EAAS,CAAC,WAAY,MAAO,QAAS,WACtC+C,EAAe,8BACfC,EAAe,CACf,EAAK,GACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,IAAM,IACN,KAAM,SACN,GAAM,KACN,EAAK,OACL,KAAQ,OACR,EAAK,OAETR,EAASS,oBAAsB,aAE/BT,EAASU,aAAe,WACxB,IAAIC,EAAiB,CACjB,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,GAEXX,EAASY,YAAc,mCACvBZ,EAASa,oBAAsB,gCAC/Bb,EAASc,sBAAwB,WACjC,IAAIC,EAAa,CACb,EAAK,aACL,IAAK,YACL,IAAK,aACL,EAAG,QACH,EAAG,QAykBP,SAASC,EAAoBjD,EAAU0B,EAAY1X,EAAMkZ,EAAWC,GAChE,IAAIC,EACAC,EAAQrZ,GAAQ,OACpB,GAAImZ,EACAC,EAAaE,EAAyB,CAAEtD,SAAUA,GAAYmD,GAAehD,QACzEmD,EAAyB,CAAEtD,SAAU,KAAO,SAASG,WAExD,CACD,IAAkD,IAA9C8B,EAASsB,cAAcjmB,QAAQ0iB,IAE/B,GADAoD,GAAa,QAASC,EAAQ,WAAarD,EAAU0B,GACvC,aAAV2B,EAAsB,CACtB,IAAIG,GAAW,QAAS,eAAiBxD,EAAU0B,GAC/C+B,GAAW,QAAS,eAAiBzD,EAAU0B,GACnD0B,EAAaA,EAAW7c,QAAQ,MAAOid,GAAUjd,QAAQ,MAAOkd,EACpE,OAGAL,GAAa,QAAS,oCAAsCpD,EAAU0B,IAEtE,QAAY0B,IAA4B,QAAbpD,IAC3BoD,EAAa,QAErB,CACA,OAAOA,CACX,CAUA,SAAS3B,EAAeiC,EAAM9D,EAAS+D,EAAMC,GACzC,IAAIC,EAAM,CAAC,EACPC,EAAeH,GAAQ,YAE3B,GADAE,EAAIE,aAAe,IAAOC,cAAcN,EAAM9D,MAAa,UAAaqC,EAASgC,oBAAsBhC,EAASiC,eAC5GN,EACAC,EAAIM,eAAgB,QAAS,UAAWN,EAAIE,kBAE3C,CACD,IAAIK,GAAa,UAAa,QAAW,mBAAqBN,EAC9DD,EAAInC,YAAa,QAAS0C,EAAYP,EAAIE,aAC9C,CACA,OAAOF,CACX,CAWA,SAAS/B,EAAiB9X,EAAM2X,EAAW/b,EAAKye,GAC5C,OAAO,QAASra,EAAO,wBACnB2X,GAAa0C,EAAY,cAAgB,aAAcze,KAASye,GAAY,QAASra,EAAO,wBAC5F2X,EAAY,YAAa/b,GAAO,GACxC,CAEA,SAAS0e,EAAwBnE,GAC7B,IAAIoE,EAAgBpE,EAAOhE,MAAM8F,EAASS,qBAC1C,GAAI6B,IAAiB,UAAY,CAC7B,IAAIC,EAAyC,IAA5BD,EAAc,GAAGzuB,OAAe,MAAQ,OACzD,OAAOqqB,EAAO5Z,QAAQ0b,EAASS,oBAAqB8B,EACxD,CACA,OAAOrE,CACX,CAEA,SAASmD,EAAyBmB,EAAe7E,GAC7C,IAAIO,EAASsE,EAActE,QAAUsE,EAAczE,SAC/C0E,GAAkB,SAAU9E,GAAW,SAAW,IAAMO,EAAQ+B,GAQpE,OAPKwC,IACDA,GAAkB,QAAS,SAAWvE,EAAQ+B,IAE9CwC,IACAA,EAAkBJ,EAAwBI,GAC1CD,EAActE,OAASuE,EAAgBne,QAAQ,KAAM,MAElDke,CACX,CAQA,SAASE,EAAyB3E,GAC9B,IAAIrD,EAAUqD,EAAS7D,MAAM8F,EAASY,aAClCgB,EAAM,CAAC,EACPhC,EAAUlF,EAAQ,GAAGiI,cAOzB,OANAf,EAAIQ,UAAyB,MAAZxC,EAEjBgC,EAAI7Z,KAAOiY,EAAS4C,eAAehD,GAC/B7B,EAASlqB,OAAS,IAClB+tB,EAAIiB,eAAiBxsB,SAASqkB,EAAQ,GAAI,KAEvCkH,CACX,CAWA,SAAS9B,EAAcF,EAASkD,EAAcC,EAASC,GACnD,IAAIC,EAAQD,EAAe,CAAC,EAAI,CAAEE,MAAO,GAAIC,KAAM,IAC/CjJ,EAAQ0F,EAAQ1F,MAAM8F,EAASG,aACnC,GAAIjG,EAAO,CACF8I,IACDC,EAAMC,MAAQE,EAAqBlJ,EAAM,GAAI6I,GAC7CE,EAAME,KAAOC,EAAqBlJ,EAAM,IAAK6I,GAC7CE,EAAMI,aAAenJ,EAAM,IAE/B,IAAIoJ,EAAWpJ,EAAM,GACrB,GAAIoJ,GAAYR,EAAc,CAC1B,IAAIS,EAASD,EAASpJ,MAAMmG,IACvB,QAAkBkD,GAInBN,EAAMO,gBAAkB,EAHxBP,EAAMO,gBAAkBD,EAAO1vB,OAKnCovB,EAAMQ,gBAAkBH,EAASzvB,OAAS,CAC9C,CACJ,CACA,OAAOovB,CACX,CASA,SAASG,EAAqBM,EAAKC,GAC/B,OAAID,EACOA,EAAIpf,QAAQ0b,EAASM,gBAAiBqD,GAE1C,EACX,CAQA,SAASC,EAAkB1B,EAAe2B,EAAcC,GACpD,IAAIC,EAASD,EAAa,IAAMA,EAAa,UAG7C,OAFkB,QAAS,cAAgBD,EAAeE,EAAQ7B,KAC9D,QAAS,cAAgB2B,EAAe,qBAAsB3B,IAAkB,GAExF,CAgCA,SAAS8B,EAAmB9F,EAAQ+F,EAAU1E,GAC1C,IAAI2E,EAAW,CAAEnc,KAAM,UAAWoW,sBAAuB,EAAGgG,sBAAuB,GAC/EvE,EAAU1B,EAAOhE,MAAM8F,EAASG,aACpC,IAAI,QAAkBP,IAA4B,KAAfA,EAAQ,IAAwB,QAAX1B,EAEpD,OADAgG,EAASnc,UAAOtT,EACTyvB,EAEXA,EAAShB,MAAQtD,EAAQ,GACzBsE,EAASf,KAAOvD,EAAQ,IACxB,IAAIwE,EAAcxE,EAAQ,GAC1BsE,EAASG,aAA4C,IAA9BD,EAAY/oB,QAAQ,KAC3C+oB,EAAcA,EAAY9f,QAAQ,KAAM,IACxC,IAAIggB,EAAe1E,EAAQ,GAuB3B,IAtBkC,IAA9BwE,EAAY/oB,QAAQ,OACpB6oB,EAASK,qBAAuBH,EAAYvwB,OAASuwB,EAAY/oB,QAAQ,OAExE,QAAkBipB,KACnBJ,EAAS/F,sBAAwBmG,EAAaE,YAAY,KAC1DN,EAASC,sBAAwBG,EAAaE,YAAY,MAClB,IAApCN,EAAS/F,wBACT+F,EAAS/F,sBAAwB,KAEG,IAApC+F,EAASC,uBAAgCD,EAASC,sBAAwBD,EAAS/F,yBACnF+F,EAASC,sBAAwBD,EAAS/F,yBAG7C,QAAkB8F,IAOnB,QAAOC,EAAUO,EAAkB,CAACP,EAAShB,MAAOgB,EAASf,MAAO,IAAK,QANzE,QAAOe,EAAUO,EAAkB,CAACP,EAAShB,MAAOgB,EAASf,MAAO,IAAKc,EAASS,iBAC7ER,EAASS,aACV,QAAOT,EAAUO,EAAkB,CAACP,EAAShB,MAAOgB,EAASf,MAAO,IAAKc,EAASW,mBAMrF,QAAkBrF,GAAY,CAC/B,IAAIsF,EAAgBhF,EAAiBqE,EAASnc,KAAMkc,EAASa,aAAaC,aAAcxF,GAAW,GAC/F2E,EAASG,cACTH,EAASc,eAAiBf,EAASa,aAAaG,cAAczH,EAAO,IACrE0G,EAASgB,UAAY,IAAaC,mBAAmBN,EAAcpM,MAAM,KAAK,KAElFyL,EAAShB,MAAQgB,EAAShB,MAAM5e,QAAQ,MAAO,IAC/C4f,EAASf,KAAOe,EAASf,KAAK7e,QAAQ,MAAO,GACjD,CACA,OAAO4f,CACX,CASA,SAASO,EAAkBW,EAAOC,EAAQtB,GAEtC,IADA,IAAIzvB,EAAU,CAAE4uB,MAAOkC,EAAM,GAAIjC,KAAMiC,EAAM,IACpClxB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAIoxB,EAAOF,EAAMlxB,GACbqxB,EAAMD,EAAKjqB,QAAQgqB,GACvB,IAAc,IAATE,IAAiBA,EAAMD,EAAKjqB,QAAQ,MAAWkqB,EAAMD,EAAKd,YAAY,MAAS,CAChFlwB,EAAQysB,EAAW7sB,IAAMoxB,EAAKE,OAAO,EAAGD,GAAOxB,EAASuB,EAAKE,OAAOD,EAAM,GAC1EjxB,EAAQysB,EAAWsE,KAAW,EAC9B/wB,EAAQyT,KAAOzT,EAAQqwB,WAAa,WAAa,UACjD,KACJ,CACJ,CACA,OAAOrwB,CACX,CA50BA0rB,EAASyF,eAAiB,iCAC1BzF,EAASsB,cAAgB,CAAC,QAAS,SAAU,OAAQ,QAErDtB,EAASiC,cAAgB,CACrB,MAAS,CACL,UAAa,CACT,UAAa,CACT,OAAU,CACN,cAAe,CACX,YAAe,CACX,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,GAAM,MACN,GAAM,MACN,GAAM,OAEV,OAAU,CACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,GAAM,KAEV,KAAQ,CACJ,EAAK,UACL,EAAK,WACL,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,YACL,GAAM,UACN,GAAM,WACN,GAAM,cAIlB,KAAQ,CACJ,cAAe,CACX,YAAe,CACX,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,OAEX,OAAU,CACN,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KAEX,MAAS,CACL,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,MAEX,KAAQ,CACJ,IAAO,SACP,IAAO,SACP,IAAO,UACP,IAAO,YACP,IAAO,WACP,IAAO,SACP,IAAO,cAInB,WAAc,CACV,OAAU,CACN,KAAQ,CACJ,GAAM,KACN,GAAM,QAIlB,KAAQ,CACJ,SAAY,CACR,EAAK,gBACL,gBAAiB,oBACjB,EAAK,cACL,gBAAiB,cAErB,QAAW,CACP,EAAK,KACL,gBAAiB,MACjB,EAAK,KACL,gBAAiB,MAErB,UAAa,CACT,EAAK,IACL,gBAAiB,MACjB,EAAK,IACL,gBAAiB,OAGzB,YAAe,CACX,KAAQ,kBACR,KAAQ,YACR,OAAU,WACV,MAAS,UAEb,YAAe,CACX,KAAQ,iBACR,KAAQ,cACR,OAAU,YACV,MAAS,UAEb,gBAAmB,CACf,KAAQ,eACR,KAAQ,eACR,OAAU,WACV,MAAS,WACT,iBAAoB,CAChB,EAAK,IACL,EAAK,MACL,GAAM,MACN,IAAO,WACP,IAAO,UACP,KAAQ,cACR,KAAQ,aACR,GAAM,MACN,MAAS,UACT,OAAU,aACV,QAAW,gBACX,EAAK,MACL,EAAK,KACL,GAAM,SACN,GAAM,QACN,IAAO,YACP,IAAO,WACP,KAAQ,cACR,KAAQ,aACR,IAAO,WACP,IAAO,UACP,EAAK,IACL,GAAM,MACN,IAAO,SACP,IAAO,MACP,KAAQ,QACR,MAAS,WACT,MAAS,SACT,GAAM,QACN,EAAK,IACL,GAAM,MACN,IAAO,QACP,KAAQ,WACR,KAAQ,QACR,MAAS,WACT,OAAU,cACV,MAAS,YAIrB,QAAW,CACP,OAAU,CACN,cAAe,CACX,YAAe,CACX,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,UACL,EAAK,SACL,EAAK,UACL,EAAK,OACL,EAAK,OACL,EAAK,OACL,GAAM,QACN,GAAM,WACN,GAAM,YAEV,OAAU,CACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,KACN,GAAM,KACN,GAAM,MAEV,KAAQ,CACJ,EAAK,WACL,EAAK,QACL,EAAK,UACL,EAAK,WACL,EAAK,WACL,EAAK,YACL,EAAK,QACL,EAAK,UACL,EAAK,UACL,GAAM,UACN,GAAM,eACN,GAAM,kBAIlB,KAAQ,CACJ,cAAe,CACX,YAAe,CACX,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,OAEX,OAAU,CACN,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KAEX,MAAS,CACL,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,MAEX,KAAQ,CACJ,IAAO,SACP,IAAO,SACP,IAAO,UACP,IAAO,YACP,IAAO,WACP,IAAO,SACP,IAAO,cAInB,WAAc,CACV,OAAU,CACN,KAAQ,CACJ,GAAM,KACN,GAAM,QAIlB,KAAQ,CACJ,SAAY,CACR,EAAK,MAET,QAAW,CACP,EAAK,MAET,UAAa,CACT,EAAK,OAGb,YAAe,CACX,KAAQ,oBACR,KAAQ,cACR,OAAU,aACV,MAAS,eAEb,YAAe,CACX,KAAQ,iBACR,KAAQ,cACR,OAAU,YACV,MAAS,UAEb,gBAAmB,CACf,KAAQ,eACR,KAAQ,eACR,OAAU,WACV,MAAS,WACT,iBAAoB,CAChB,EAAK,IACL,EAAK,MACL,GAAM,MACN,IAAO,WACP,IAAO,UACP,KAAQ,cACR,KAAQ,aACR,GAAM,MACN,MAAS,UACT,OAAU,aACV,QAAW,gBACX,EAAK,MACL,EAAK,KACL,GAAM,SACN,GAAM,QACN,IAAO,YACP,IAAO,WACP,EAAK,IACL,GAAM,MACN,IAAO,SACP,IAAO,MACP,KAAQ,QACR,MAAS,WACT,MAAS,SACT,GAAM,QACN,EAAK,MACL,KAAQ,MACR,MAAS,YACT,OAAU,cACV,QAAW,iBACX,QAAW,UACX,SAAY,aACZ,UAAa,gBACb,SAAY,WACZ,QAAW,UACX,SAAY,eAK5B,cAAiB,CACb,WAAc,gBACd,UAAa,SACb,cAAiB,QAGzB,QAAW,CACP,WAAc,CACV,IAAO,CACH,YAAe,YACf,OAAU,IACV,oBAAqB,KAEzB,IAAO,CACH,YAAe,OACf,OAAU,IACV,oBAAqB,KAEzB,IAAO,CACH,YAAe,gBACf,oBAAqB,MAG7B,uBAA0B,OAC1B,sBAAyB,IACzB,4BAA6B,CACzB,QAAW,IACX,MAAS,IACT,KAAQ,IACR,YAAe,IACf,SAAY,IACZ,UAAa,IACb,YAAe,IACf,uBAA0B,IAC1B,SAAY,IACZ,SAAY,IACZ,IAAO,MACP,cAAiB,KAErB,mCAAoC,CAChC,SAAY,aAEhB,mCAAoC,CAChC,SAAY,UAEhB,oCAAqC,CACjC,SAAY,YACZ,WAAc,yBAElB,sCAAuC,CACnC,SAAY,SAIxBjC,EAASgC,oBAAsB,CAC3B,QAAW,CACP,OAAU,CACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,KAET,aAAgB,aAChB,cAAiB,CACb,QAAW,IACX,MAAS,IACT,SAAY,IACZ,UAAa,IACb,YAAe,IACf,IAAO,MACP,cAAiB,IACjB,SAAY,KAEhB,cAAiB,IACjB,eAAkB,IAClB,cAAiB,CACb,MAAS,IACT,KAAQ,GACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,GACT,KAAQ,IACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,IACT,KAAQ,IACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,cAAiB,CACb,MAAS,KACT,KAAQ,IACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,IACT,KAAQ,GACR,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,GACT,KAAQ,GACR,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,IAG3B,MAAS,CACL,WAAc,CACV,GAAM,KACN,GAAM,MAEV,cAAiB,IACjB,KAAQ,CACJ,YAAe,CACX,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,OAEX,MAAS,CACL,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,MAEX,KAAQ,CACJ,IAAO,SACP,IAAO,SACP,IAAO,UACP,IAAO,YACP,IAAO,WACP,IAAO,SACP,IAAO,aAGf,OAAU,CACN,YAAe,CACX,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,GAAM,MACN,GAAM,MACN,GAAM,OAEV,KAAQ,CACJ,EAAK,UACL,EAAK,WACL,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,YACL,GAAM,UACN,GAAM,WACN,GAAM,aAGd,KAAQ,CACJ,EAAK,QAKjBhC,EAAS0F,WAAa,CAClB,EAAG,cACH,EAAG,OACH,EAAG,SACH,EAAG,eAKP1F,EAAS1E,MAAQ,SACjB0E,EAAS2F,KAAO,OAIhB3F,EAAS4C,eAAiB,CACtBgD,EAAG,WACHC,EAAG,UACHC,EAAG,UACHC,EAAG,WACHC,EAAG,cAmCPhG,EAASgB,oBAAsBA,EAsB/BhB,EAASR,eAAiBA,EAe1BQ,EAASH,iBAAmBA,EAS5BG,EAASqC,wBAA0BA,EAanCrC,EAASqB,yBAA2BA,EAmBpCrB,EAAS0C,yBAA2BA,EAiCpC1C,EAASF,cAAgBA,EA2BzBE,EAAS4D,kBAAoBA,EAsB7B5D,EAASiG,aAbT,SAAsB/H,EAAQ+F,EAAUtgB,GAIpC,IAHA,IAAIrP,EAAU,CAAC,EACX4xB,EAAchI,EAAOzF,MAAM,KAC3BvW,EAAO,CAAC,QAAS,QAAS,YACrBhO,EAAI,EAAGA,EAAIgyB,EAAYryB,OAAQK,IACpCI,EAAQ4N,EAAKhO,IAAM8vB,EAAmBkC,EAAYhyB,GAAI+vB,EAAUtgB,GAMpE,OAJI,QAAkBrP,EAAQ2uB,SAC1B3uB,EAAQ2uB,OAAQ,QAAO,CAAC,EAAG3uB,EAAQ6xB,OACnC7xB,EAAQ2uB,MAAMC,OAAQ,QAAkBe,GAAY,IAAM3vB,EAAQ2uB,MAAMC,MAAQe,EAASmC,YAAc9xB,EAAQ2uB,MAAMC,OAElH5uB,CACX,EA8EA0rB,EAASyE,kBAAoBA,EAW7BzE,EAASD,iBAJT,SAA0BsG,GACtB,IAAI3iB,IAAS,QAAS,oBAAqB2iB,IAAY,IAAInM,MAAM,yBACjE,OAAOxW,EAAQA,EAAM,GAAK,GAC9B,EA2CAsc,EAAShB,wBAjCT,SAAiCrB,EAASrpB,EAASmtB,EAAM1C,GACrD,IAAIuH,EAAa9G,EAAeiC,EAAM9D,EAASrpB,EAAQiyB,WACnD,YACAjyB,EAAU+sB,EAAyB/sB,EAASqpB,IAEhD,IAAI6I,EAAgBlyB,EAAQ4pB,QAAU8C,EAAoB1sB,EAAQypB,SAAUuI,EAAW7G,WAAYnrB,EAAQyT,MAC3G,GAAIgX,EAAe,CAIf,GAHAyH,EAAgBA,EAAcliB,QAAQic,GAAc,SAAUX,GAC1D,OAAOY,EAAaZ,EACxB,KACoC,IAAhC4G,EAAcnrB,QAAQ,KAAa,CACnC,IAAIorB,EAAUD,EAActM,MAAM,MAAMrmB,OACpC6yB,OAAkB,EAClBpjB,EAAY,CAAE,SAAY,CAAC,GAC/BA,EAAUqjB,UAAY,IAAOC,gBAAgBN,EAAWxE,aAAc,IAAO+E,mBAAmBpF,IAChGne,EAAUwjB,UAAW,QAAS,sBAAuBR,EAAWxE,cAChE,IACIiF,GADQ,IAAIjV,MACKkV,oBACjBpH,EAAW6G,EAAU,EAAK,QAAUnjB,EAAUwjB,SAASG,WAC3DrH,EAAUA,EAAQtb,QAAQ,KAAMhB,EAAUqjB,UAAUO,eACnC,IAAbH,EACAL,EAAkBpjB,EAAUwjB,SAASK,eAGrCT,EAAkB,KAAWU,iBAAiBL,EAAUnH,GACxD8G,EAAkBpjB,EAAUwjB,SAASO,UAAU/iB,QAAQ,QAASoiB,IAEpEF,EAAgBA,EAAcliB,QAAQ,OAAQ,IAAMoiB,EAAkB,IAC1E,CACAF,EAAgBA,EAAcliB,QAAQ,KAAM,GAChD,CACA,OAAOkiB,CACX,EA4FAxG,EAASb,sBArET,SAA+BxB,EAASrpB,EAASmtB,EAAMvC,GACnD,IAGIoI,EAuBAd,EA1BAF,EAAa9G,EAAeiC,EAAM9D,EAAS,IAAI,GAC/C4J,EAAe,CAAEC,QAAQ,GACzBC,EAAiBnB,EAAWpE,cAE5BwF,EAAS,CAAC,EACVC,GAAYrzB,EAAQ4pB,QAAU,IAAIhE,MAAM8F,EAASa,qBACjD9Y,EAAOiY,EAASY,YAAYvc,KAAK/P,EAAQ4pB,QAAUwE,EAAyBpuB,EAAQ4pB,QAAU,KAAO,CAAC,EACtG+F,EAAW,CAAC,EAChB,GAAI0D,EAAU,CACV1D,EAASa,cAAe,WACpB,QAAO,CAAC,EAAGwB,EAAWpE,eACtB,IAAO0E,gBAAgBN,EAAWxE,aAAc,IAAO+E,mBAAmBpF,IAAO,GACrF,IAAImG,GAAU,WAAa,QAAS,iBAAkBtB,EAAWpE,eAC7D0B,EAAkB0C,EAAWpE,cAAe5tB,EAAQ2pB,UAAY,KAAqB3pB,EAAQwvB,WAC7Fe,EAAgBhF,EAAiB,WAAYoE,EAASa,aAAaC,aAAcuB,EAAWpE,cAAe,KAAO7d,KAAK/P,EAAQ4pB,SAE/HzF,GADJoM,EAAgBA,EAAcvgB,QAAQ,UAAWsjB,IACvBnP,MAAM,KAChCiP,EAAOG,sBAAqB,WAAqBpP,EAAM5kB,OAAS,EAChE6zB,EAAOzE,OAAQ,WAAa,QAASlb,EAAKA,KAAO,QAAS0f,GACtD3H,EAAcrH,EAAM,IAAM,IAAMA,EAAM,IAAI,EAAMmP,GACpDF,EAAOvB,OAAQ,WAAa,QAASpe,EAAKA,KAAO,QAAS0f,GACtD3H,EAAcrH,EAAM,IAAI,EAAOmP,GAC9BD,EAAS,IAAOrzB,EAAQ6pB,uBAA0B7pB,EAAQ6vB,wBAC3DmD,EAAUxH,EAAc+E,EAAcpM,MAAM,KAAK,IAAI,EAAM,IAAI,GAAM+K,gBAE7E,CAEA,GAAKxD,EAASY,YAAYvc,KAAK/P,EAAQ4pB,UAAc5pB,EAAc,OAAG,CAIlE,IAHA,QAAOizB,EAAc7E,EAAyBpuB,EAAQ4pB,QAAU,MAChEqJ,EAAaC,QAAS,EACtBhB,EAAgB,OACZe,EAAa1E,gBAAkBvuB,EAAQ6pB,uBAAyB7pB,EAAQ6vB,uBAAyBmD,EAAS,CAEtGC,EAAa1E,iBACbvuB,EAAQ6pB,sBAAwB7pB,EAAQ6vB,sBAAwBoD,EAAa1E,gBAEjF2D,EAiCZ,SAA+B5G,EAASkI,EAAWC,GAC/CnI,GAAW,IACX,IAAK,IAAI7C,EAAI,EAAGA,EAAI+K,EAAW/K,IAC3B6C,GAAW,IAEf,GAAIkI,EAAYC,EAEZ,IADA,IAAIC,EAAOD,EAAYD,EACdp1B,EAAI,EAAGA,EAAIs1B,EAAMt1B,IACtBktB,GAAW,IAGnB,OAAOA,CACX,CA7C4BqI,CAAsBzB,EAAec,GAAWC,EAAa1E,gBACzEvuB,EAAQ6pB,uBALS,EAKgC7pB,EAAQ6vB,uBALxC,EAMzB,CAOA,GANI7vB,EAAQiwB,uBACRiC,EA0CZ,SAA+B5G,EAASsI,GAGpC,IAFA,IAAIna,EAAO6R,EAAQnH,MAAM,KACrB0P,EAAU,GACL3tB,EAAI,EAAGA,EAAI0tB,EAAQ1tB,IACxB2tB,GAAW,IAEf,OAAOpa,EAAK,GAAMoa,EAAU,IAAMpa,EAAK,GAAMoa,CACjD,CAjD4BC,CAAsB5B,EAAelyB,EAAQiwB,uBAE7DjwB,EAAQ+vB,cACRmC,EA+CZ,SAAyB5G,GACrB,IAAI7R,EAAO6R,EAAQnH,MAAM,KACrB0P,EAAUpa,EAAK,GACfsa,EAAK,EAAIF,EAAQt0B,OAAS,EAG9B+rB,EAAU,GACV,IAAK,IAAIplB,GAFT2tB,GADYE,GAAa,IAAPA,EAAY,IAAc,IAAPA,EAAW,KAAO,IACtCF,GAEIt0B,OAAS,EAAG2G,EAAI,EAAGA,GAAQ,EAC5ColB,EAAU,IAAMuI,EAAQ3tB,EAAI,GAAK2tB,EAAQ3tB,EAAI,GAAK2tB,EAAQ3tB,GAAKolB,EAGnE,OADAA,EAAUA,EAAQlqB,MAAM,GACjBqY,EAAK,GAAM6R,EAAU,IAAM7R,EAAK,GAAM6R,CACjD,CA3D4B0I,CAAgB9B,IAEV,aAAtBe,EAAaxf,MAAwBwf,EAAaxf,OAAQ,UAAa,EACnE,WAAoC,aAAtBwf,EAAaxf,OAC3B2f,EAAOvB,OAAQ,QAASoB,EAAaxf,KAAO,QAAS0f,GACrDC,EAAOzE,OAAQ,QAASsE,EAAaxf,KAAO,QAAS0f,IAEzD,IAAIc,EAAW/B,EACfA,EAAgBkB,EAAOvB,MAAMjD,MAAQqF,EAAWb,EAAOvB,MAAMhD,MACzDuE,EAAOG,qBAAsB,aAC7BrB,GAAiB,IAAMkB,EAAOzE,MAAMC,MAAQqF,EAAWb,EAAOzE,MAAME,KAE5E,CAC0B,YAAtBoE,EAAaxf,OAAuB,YACpCye,GAAiB,KAEzB,MAEIA,EAAgBlyB,EAAQ4pB,OAAO5Z,QAAQ,MAAO,KAKlD,OAHI3R,OAAOsP,KAAKgiB,GAAUpwB,OAAS,IAC/B2yB,EAAiBtH,EAAmDsH,EArF5E,SAAuBnB,EAAQ3G,GAC3B,IAA6B,IAAzB2G,EAAOhqB,QAAQ,KAAa,CAE5B,IAAIod,EAAQ4M,EAAO5M,MAAM,KACzB4M,EAAU5M,EAAM,IAAK,QAAS,mCAAoCiG,GAC9DjG,EAAM,GAAGnU,QAAQ,KAAK,QAAS,qCAAsCoa,GAC7E,MAEI2G,EAASA,EAAO/gB,QAAQ,KAAK,QAAS,qCAAsCoa,IAEhF,OAAO2G,CACX,CA0EmCmD,CAAchC,EAAevC,IAErDuC,CACX,EAiDAxG,EAASX,YAbT,SAAqB1B,EAAS8D,GAC1B,IAAIgH,EAthCc,MAuhCdjL,GAAS,QAAS,iCAAkCiE,GACpDiH,EAAW/K,EAQf,MAPI,MAAQtZ,KAAKqkB,KACbA,EAAWA,EAAShzB,MAAM,IAE9BgzB,EAAWA,EAAShzB,MAAM,EAAG,GAAGitB,cAAgB+F,EAASlD,OAAO,GAC5DhI,IACAiL,EAAWjL,EAAOkL,IA9hCJ,OAgiCX/H,EAAe8H,EAC1B,EAkBAzI,EAAS2I,sBAVT,SAA+BxC,EAAOyC,EAAWC,GAC7C,IAAIC,GAAY,OAAwBD,GACxC,GAAID,IAAcE,EACd,IAAK,IAAItzB,EAAK,EAAGuzB,EAAU5C,EAAO3wB,EAAKuzB,EAAQl1B,OAAQ2B,IAAM,CACzD,IAAI0M,EAAO6mB,EAAQvzB,GACnB0M,EAAKihB,KAAOjhB,EAAKihB,KAAK7e,QAAQskB,EAAWE,GACzC5mB,EAAKghB,MAAQhhB,EAAKghB,MAAM5e,QAAQskB,EAAWE,EAC/C,CAER,EA0BA9I,EAASgJ,cArBT,SAAuBpM,GACnB,IAEIqM,EAFAC,EAAU,IAAIpX,KAAK8K,EAAKnB,cAAe,EAAG,GAC1CL,EAAM8N,EAAQC,SAElB/N,EAAOA,GAAO,EAAIA,EAAMA,EAAM,EAC9B,IAAIgO,EAAStvB,KAAKyZ,OAAOqJ,EAAKnI,UAAYyU,EAAQzU,UACa,KAA1DmI,EAAKoK,oBAAsBkC,EAAQlC,sBAAgC,OAAY,EACpF,GAAI5L,EAAM,GAEN,IADA6N,EAAUnvB,KAAKyZ,OAAO6V,EAAShO,EAAM,GAAK,GAAK,GACjC,GAAI,CACd,IACIiO,EADQ,IAAIvX,KAAK5e,KAAKuoB,cAAgB,EAAG,EAAG,GAC/B0N,SAEjBF,GADAI,EAAOA,GAAQ,EAAIA,EAAOA,EAAO,GAChB,EAAI,EAAI,EAC7B,OAGAJ,EAAUnvB,KAAKyZ,OAAO6V,EAAShO,EAAM,GAAK,GAE9C,OAAO6N,CACX,CAEH,CApmCD,CAomCGjJ,IAAaA,EAAW,CAAC,G,qLC3nC5B,SAASsJ,EAAUhd,EAAUid,EAAQC,EAAczhB,GAI/C,OAHKuE,EAASxI,WAAW9Q,eAAeu2B,IAAajd,EAASxI,WAAWylB,aAAmBxhB,IACxFuE,EAASxI,WAAWylB,IAAU,QAAexhB,EAAM,CAACuE,EAAUid,EAAQC,KAEnEld,EAASxI,WAAWylB,EAC/B,CAUA,SAASE,EAAend,EAAUid,EAAQC,EAAczhB,EAAM2hB,EAAUC,GAGpE,IAFA,IAAIC,EAAS,GACTC,EAAML,EAAeA,EAAa31B,OAAS,EACtCK,EAAI,EAAGA,EAAI21B,EAAK31B,IAAK,CAC1B,IAAI41B,EAAU/hB,EAId,GAHI4hB,IACAG,EAAU/hB,EAAKyhB,EAAat1B,GAAIoY,IAEhCod,EAAU,CACV,IAAIlpB,GAAO,QAAespB,EAAS,CAACxd,EAAUid,EAAQ,CAAC,GAAG,IAC1D/oB,EAAKnC,cAAcmrB,EAAat1B,IAAI,GACpC01B,EAAO7sB,KAAKyD,EAChB,MAEIopB,EAAO7sB,MAAK,QAAe+sB,EAAS,CAACxd,EAAUid,EAAQC,EAAat1B,IAAI,IAEhF,CACA,OAAO01B,CACX,CAMA,SAASG,EAAeP,EAAcD,GAClC,OAAO,WAIH,OAHKr2B,KAAK4Q,WAAW9Q,eAAeu2B,KAChCr2B,KAAK4Q,WAAWylB,GAAUC,GAEvBt2B,KAAK4Q,WAAWylB,EAC3B,CACJ,CAMA,SAASS,EAAeR,EAAcD,GAClC,OAAO,SAAUtS,GACb,GAAI/jB,KAAK4Q,WAAWylB,KAAYtS,EAAU,CACtC,IAAIgT,EAAS/2B,KAAK4Q,WAAW9Q,eAAeu2B,GAAUr2B,KAAK4Q,WAAWylB,GAAUC,EAChFt2B,KAAK8jB,YAAYuS,EAAQtS,EAAUgT,GACnC/2B,KAAK4Q,WAAWylB,GAAUtS,CAC9B,CACJ,CACJ,CAIA,SAASiT,EAAcV,EAAcD,EAAQxhB,GACzC,OAAO,WACH,OAAOuhB,EAAUp2B,KAAMq2B,EAAQC,EAAczhB,EACjD,CACJ,CAIA,SAASoiB,EAAcX,EAAcD,EAAQxhB,GACzC,OAAO,SAAUkP,GACbqS,EAAUp2B,KAAMq2B,EAAQC,EAAczhB,GAAM1J,cAAc4Y,EAC9D,CACJ,CAkBA,SAASmT,EAAmBZ,EAAcD,EAAQxhB,GAC9C,OAAO,WACH,IAAIxT,EAAQrB,KACZ,IAAKA,KAAK4Q,WAAW9Q,eAAeu2B,GAAS,CACzC,IAAIc,EAAgBZ,EAAev2B,KAAMq2B,EAAQC,EAAczhB,GAAM,GACrE7U,KAAK4Q,WAAWylB,GAAUc,CAC9B,CACA,IAAI9xB,OAAkC9D,IAAvBvB,KAAKo3B,eAA+Bp3B,KAAKo3B,cAAcvU,uBAC/D7iB,KAAK6iB,sBAaZ,OAZK7iB,KAAK4Q,WAAWylB,GAAQv2B,eAAe,SAAYuF,GACpD,CAAC,OAAQ,OAAO8gB,SAAQ,SAAUkR,GAC9B,IAAIC,EAAa,CACb9mB,MAAO+mB,EAA4BF,EAAYhB,EAAQxhB,EAAMxT,EAAMuP,WAAWylB,IAAShpB,KAAKhM,GAC5Fm2B,cAAc,GAElB/3B,OAAOwB,eAAeI,EAAMuP,WAAWylB,GAASgB,EAAYC,EAChE,IAECt3B,KAAK4Q,WAAWylB,GAAQv2B,eAAe,mBACxCL,OAAOwB,eAAejB,KAAK4Q,WAAWylB,GAAS,iBAAkB,CAAE7lB,OAAO,IAEvExQ,KAAK4Q,WAAWylB,EAC3B,CACJ,CACA,SAASoB,EAAmBnB,EAAcD,EAAQxhB,GAC9C,OAAO,SAAUkP,GACb/jB,KAAKuiB,sBAAuB,EAC5B,IAAImV,EAAqBnB,EAAev2B,KAAMq2B,EAAQC,EAAczhB,GAAM,GACtE8iB,EAAmBpB,EAAev2B,KAAMq2B,EAAQtS,EAAUlP,GAAM,GACpE7U,KAAKuiB,sBAAuB,EAC5BviB,KAAK8jB,YAAYuS,EAAQsB,EAAkBD,GAC3C13B,KAAK4Q,WAAWylB,GAAUsB,CAC9B,CACJ,CAmBA,SAASJ,EAA4BK,EAAOvB,EAAQxhB,EAAMpG,GAEtD,OAAO,WAEH,IADA,IAAIsV,EAAW,GACNzhB,EAAK,EAAGA,EAAK5B,UAAUC,OAAQ2B,IACpCyhB,EAASzhB,GAAM5B,UAAU4B,GAE7B,IAAIu1B,EAAY73B,KAAK83B,SAAW93B,KAAK+3B,eAAiB,IAAM1B,EAAS,IAAMA,EAAS,IACpF,OAAQuB,GACJ,IAAK,OACD,IAAK,IAAI52B,EAAI,EAAGA,EAAI+iB,EAASpjB,OAAQK,IAAK,CACtCpB,MAAMM,UAAU03B,GAAOlmB,MAAMjD,EAAM,CAACsV,EAAS/iB,KAC7C,IAAIg3B,EAAUC,EAAcJ,GAAappB,EAAK9N,OAAS,GAAIojB,EAAS/iB,IAAKhB,KAAKo3B,cAAeQ,GAC7F53B,KAAKojB,eAAe4U,EAASjU,EAAS/iB,IAAI,EAAO42B,EACrD,CACA,MACJ,IAAK,MACDh4B,MAAMM,UAAU03B,GAAOlmB,MAAMjD,GAC7B,IAAIrM,EAAQ61B,EAAcJ,EAAYppB,EAAK9N,OAAQ,MAAOX,KAAKo3B,cAAeQ,GAC9E53B,KAAKojB,eAAehhB,EAAO,CAAE81B,UAAW,QAAS,EAAON,GAGhE,OAAOnpB,CACX,CAEJ,CACA,SAASwpB,EAAcJ,EAAWrnB,EAAO2nB,EAAiBC,GACtD,IAAIC,EAAcR,EAClB,GAAIM,KACAE,EAAc,CAAC,GACHR,GAAarnB,EACrBA,GAA0B,iBAAVA,GAAoB,CAEpC6nB,EAAYR,GAAiB,UAAIO,CACrC,CAEJ,OAAOC,CACX,CAUO,SAASC,EAAShC,GACrB,OAAO,SAAUh2B,EAAQC,GACrB,IAAIg4B,EAAqB,CACrBC,IAAK1B,EAAeR,EAAc/1B,GAClCk4B,IAAK5B,EAAeP,EAAc/1B,GAClCm4B,YAAY,EACZlB,cAAc,GAGlB/3B,OAAOwB,eAAeX,EAAQC,EAAKg4B,GACnCI,EAAsBr4B,EAAQC,EAAK,OAAQ+1B,EAC/C,CACJ,CAWO,SAASsC,EAAQtC,EAAczhB,GAClC,OAAO,SAAUvU,EAAQC,GACrB,IAAIg4B,EAAqB,CACrBC,IAAKvB,EAAcX,EAAc/1B,EAAKsU,GACtC4jB,IAAKzB,EAAcV,EAAc/1B,EAAKsU,GACtC6jB,YAAY,EACZlB,cAAc,GAGlB/3B,OAAOwB,eAAeX,EAAQC,EAAKg4B,GACnCI,EAAsBr4B,EAAQC,EAAK,cAAe+1B,EAAczhB,EACpE,CACJ,CAkCO,SAASgkB,EAAWvC,EAAczhB,GACrC,OAAO,SAAUvU,EAAQC,GACrB,IAAIg4B,EAAqB,CACrBC,IAAKf,EAAmBnB,EAAc/1B,EAAKsU,GAC3C4jB,IAAKvB,EAAmBZ,EAAc/1B,EAAKsU,GAC3C6jB,YAAY,EACZlB,cAAc,GAGlB/3B,OAAOwB,eAAeX,EAAQC,EAAKg4B,GACnCI,EAAsBr4B,EAAQC,EAAK,UAAW+1B,EAAczhB,EAChE,CACJ,CAiCO,SAASikB,IACZ,OAAO,SAAUx4B,EAAQC,GACrB,IAAIw4B,EAAkB,CAClBP,IAAK,SAAUzU,GACX,IAAIC,EAAWhkB,KAAK4Q,WAAWrQ,GAC/B,GAAIyjB,IAAaD,EAAU,CACvB,IAAIiV,EAAeC,EAAiBj5B,KAAMO,IACZ,KAA1B,QAAYyjB,IACZgV,EAAalrB,QAAQoW,oBAAoB8U,EAAaE,OAAQlV,GAElEgV,EAAalrB,QAAQV,iBAAiB4rB,EAAaE,OAAQnV,GAC3D/jB,KAAK4Q,WAAWrQ,GAAOwjB,CAC3B,CACJ,EACA0U,IAAK5B,OAAet1B,EAAWhB,GAC/Bm4B,YAAY,EACZlB,cAAc,GAElB/3B,OAAOwB,eAAeX,EAAQC,EAAKw4B,GACnCJ,EAAsBr4B,EAAQC,EAAK,QACvC,CACJ,CAsBO,SAAS44B,EAAsBC,GAEtC,CAKA,SAAST,EAAsBr4B,EAAQC,EAAK84B,EAAc/C,EAAczhB,IAChE,QAAYvU,EAAOg5B,YACnBh5B,EAAOg5B,SAAW,CACdC,MAAO,GACPC,aAAc,GACdC,SAAU,GACVC,OAAQ,GACRC,UAAW,GACXC,iBAAkB,GAClBC,aAAc,GACdC,WAAY,KAIpBx5B,EAAOg5B,SAASD,EAAe,KAAKxvB,KAAK,CACrCkwB,aAAcx5B,EACd+1B,aAAcA,EACdzhB,KAAMA,IAEVvU,EAAOg5B,SAASD,EAAe,SAASxvB,KAAKtJ,EAEjD,CAiFA,SAAS04B,EAAiBnrB,EAASorB,GAC/B,IAA4C,IAAxCprB,EAAQhO,eAAe,aACvB,MAAO,CAAEgO,QAASA,EAASorB,OAAQA,GAGnC,IAAIc,GAAU,QAAS,WAAYlsB,GAInC,OAHIksB,IACAd,EAASc,EAAU,IAAMd,GAEtBD,GAAiB,QAAS,YAAanrB,GAAUorB,EAEhE,C,mOCxdIe,EAAU,sBACVC,EAAU,8BACHC,EAAkB,CAAC,EACvB,SAASC,IACZ,MAAO,IAAMxzB,KAAKyzB,SAAS71B,SAAS,IAAI8tB,OAAO,EAAG,EACtD,CAQO,SAASgI,EAAQC,EAAgB7gB,GACpC,IAAI8gB,EAAWC,EAAUH,QAAQC,EAAgB7gB,GAEjD,OAAO,SAAU1K,EAAM0rB,EAAW5C,EAAU6C,EAAY5vB,EAAkByE,EAAOrN,GAC7E,IAAIu0B,EAAS8D,EAASxrB,EAAM0rB,EAAW5C,EAAU31B,GAE7Cy4B,EAAmB,mBACvB,IAAI,YAAe7vB,EAAkB,CACjC,IACI8vB,EAAWF,EADAP,IAKf,GAHKD,EAAgBQ,KACjBR,EAAgBQ,GAAc,KAE7B,QAAkBnrB,GAanBR,EAAK4rB,GAAoBC,EACzBV,EAAgBQ,GAAY9wB,KAAKmF,QAZjC,IADA,IACS1M,EAAK,EAAGghB,EADN7jB,OAAOsP,KAAKorB,EAAgBQ,GAAYnrB,IACnBlN,EAAKghB,EAAO3iB,OAAQ2B,IAAM,CACtD,IAAI/B,EAAM+iB,EAAOhhB,GACb/B,IAAQq6B,GAAoB5rB,EAAKzO,KACjC45B,EAAgBQ,GAAYnrB,GAAOjP,GAAOyO,EAAKzO,IAE/CA,IAAQq6B,IACRC,EAAWV,EAAgBQ,GAAYnrB,GAAOjP,GAEtD,CAOJ,MAAoB,gBAAbu3B,EAA6B,EAAC,OAAc,KAAM,CAAElrB,GAAIiuB,EAAUlzB,UAAW,uBAEhF,EAAC,OAAc,MAAO,CAAEiF,GAAIiuB,EAAUlzB,UAAW,sBACzD,CACA,MAAsB,iBAAX+uB,EACHwD,EAAQ/oB,KAAKulB,IACH,OAAc,MAAO,CAAEra,UAAWqa,IACjCoE,YAGD,OAAeb,EAAQ9oB,KAAKulB,GAAU,QAAU,MAAQ,CAAEra,UAAWqa,IACpEoE,WAIRpE,CAEf,CACJ,CACO,SAASqE,EAAqBJ,EAAYprB,EAAcyrB,EAAMC,EAASC,GAE1E,IAAI,UAAY,CAEZrzB,OAAgB,SAAEszB,eAAe5rB,EAAc4qB,EAAgBQ,GAAaA,EAAYK,EAAME,IAC9E,IAAZD,IACAd,EAAgBQ,GAAc,GAEtC,CACJ,CACO,SAASS,EAAoBT,EAAYprB,EAAcC,GAC1D,IAAI6rB,EAAc54B,SAAS64B,eAAeX,GAC1C,GAAIU,EAGA,IADA,IAAIE,EAAiBF,EAAY7yB,uBAAuB,yBAC/CxH,EAAI,EAAGA,EAAIu6B,EAAe56B,OAAQK,IAAK,CAC5C,IAAIw6B,EAAS,IAKTA,GAJC,QAAkBhsB,GAIV+rB,EAAev6B,GAAGiC,aAAa,mBAH/Bs4B,EAAe/rB,GAAOvM,aAAa,mBAKhD,IAAIw4B,EAAch5B,SAAS64B,eAAeE,GAC1C,GAAIC,EAEA,IADA,IAAIC,EAAWD,EAAYX,WAAWn6B,OAC7BwmB,EAAI,EAAGA,EAAIuU,EAAUvU,KACrB,QAAkB3X,GAKnB+rB,EAAev6B,GAAG4G,YAAY6zB,EAAYX,WAAW,KAJrDS,EAAe/rB,GAAO5H,YAAY6zB,EAAYX,WAAW,IACzD95B,EAAIu6B,EAAe56B,OAOnC,CAER,CAMO,SAASg7B,EAAkBC,GAC9BnB,EAAUH,QAAUsB,EAAStB,OACjC,CAMO,SAASuB,IACZ,OAAOpB,EAAUH,OACrB,CAEA,IASIG,EAAY,CAAEH,SAAS,IATC,WACxB,SAASwB,IACT,CAKA,OAJAA,EAAO57B,UAAUo6B,QAAU,SAAUC,EAAgB7gB,GAEjD,YADe,IAAXA,IAAqBA,EAAS,CAAC,IAC5B,OAAO6gB,EAAgB7gB,EAClC,EACOoiB,CACX,CAR2B,KASaxB,Q,8dCrIxC,IAAIyB,EAAY,gBACZC,EAAM,EACNC,GAAmB,EAgBhB,SAASC,EAAeC,EAAeC,GAC1C,IAAIC,EAAaD,EAEjB,OADAC,EAAWC,aAAQ/6B,GACZ,IAAKmE,SAASxF,UAAUmN,KAAKqE,MAAMyqB,EAAeE,GAC7D,CAOO,SAASE,EAAa1uB,GACzB,IAAI2uB,EACAC,EAAM,IAAIC,YAAY,IACV70B,OAAO80B,UAAY90B,OAAO+0B,QAChCC,gBAAgBJ,GAC1B,IAAIK,EAAS,MAkZjB,SAAsBL,GAElB,IADA,IAAI/N,EAAM,GACD1tB,EAAI,EAAGA,EAAI,EAAGA,IACnB0tB,IAAQ1tB,EAAI,IAAM,IAAMy7B,EAAIz7B,GAEhC,OAAO0tB,CACX,CAxZyBqO,CAAaN,GAC9BO,EAAiB,SAAUpvB,GACvBA,EAAMqvB,SAAWp1B,QAAgC,iBAAf+F,EAAMoB,MAAqBpB,EAAMoB,KAAKrO,QAAU,IAAMiN,EAAMoB,OAAS8tB,IACvGjvB,IACA2uB,IAER,EAGA,OAFA30B,OAAOuF,iBAAiB,UAAW4vB,GAAgB,GACnDn1B,OAAOq1B,YAAYJ,EAAQ,KACpBN,EAAS,WACZ30B,OAAOqc,oBAAoB,UAAW8Y,GACtCnvB,EAAUmvB,EAAiBF,OAASv7B,CACxC,CACJ,CAQO,SAAS47B,EAASC,EAAW3sB,GAIhC,IAFA,IAAID,EAAQC,EACR4sB,EAASD,EAAUhsB,QAAQ,MAAO,KAAKA,QAAQ,MAAO,IAAImU,MAAM,KAC3DvkB,EAAI,EAAGA,EAAIq8B,EAAO18B,SAAW28B,EAAY9sB,GAAQxP,IACtDwP,EAAQA,EAAM6sB,EAAOr8B,IAEzB,OAAOwP,CACX,CASO,SAAS+sB,EAASH,EAAW5sB,EAAOC,GACvC,IAGIzP,EAEAT,EALAwO,EAAOquB,EAAUhsB,QAAQ,MAAO,KAAKA,QAAQ,MAAO,IAAImU,MAAM,KAC9DiY,EAAQ/sB,GAAO,CAAC,EAChBgtB,EAAUD,EAEV78B,EAASoO,EAAKpO,OAElB,IAAKK,EAAI,EAAGA,EAAIL,EAAQK,IACpBT,EAAMwO,EAAK/N,GACPA,EAAI,IAAML,EACV88B,EAAQl9B,QAAiBgB,IAAViP,EAAsB,CAAC,EAAIA,EAErCktB,EAAkBD,EAAQl9B,MAC/Bk9B,EAAQl9B,GAAO,CAAC,GAEpBk9B,EAAUA,EAAQl9B,GAEtB,OAAOi9B,CACX,CAQO,SAASG,EAAaltB,EAAKlQ,UACvBkQ,EAAIlQ,EACf,CAOO,SAASq9B,EAASntB,GAErB,OAASitB,EAAkBjtB,IAAQA,EAAIxQ,cAD1B,CAAC,EACgDA,WAClE,CAkBO,SAAS49B,EAAMZ,EAAQa,GAC1B,IAAKJ,EAAkBI,GAKnB,IAJA,IAAIC,EAAUd,EACVe,EAAWF,EAEXG,EAAY,YACP37B,EAAK,EAAGghB,EAFN7jB,OAAOsP,KAAK+uB,GAESx7B,EAAKghB,EAAO3iB,OAAQ2B,IAAM,CACtD,IAAI/B,EAAM+iB,EAAOhhB,GACZo7B,EAAkBK,EAAQE,MAAqD,IAArCF,EAAQE,GAAW91B,QAAQ5H,KACrEq9B,EAASI,EAASz9B,MAASX,MAAMs+B,QAAQF,EAASz9B,IAInDw9B,EAAQx9B,GAAOy9B,EAASz9B,GAHxB49B,EAAOJ,EAAQx9B,GAAMw9B,EAAQx9B,GAAMy9B,EAASz9B,IAAM,EAK1D,CAER,CASO,SAAS49B,EAAOC,EAAQC,EAAOC,EAAQC,GAC1C,IAAI7H,EAAS0H,GAA4B,iBAAXA,EAAsBA,EAAS,CAAC,EAC1Dz9B,EAASD,UAAUC,OACnB49B,IACA59B,GAAkB,GAmCtB,IAjCA,IAAIoQ,EAAU,SAAU/P,GACpB,IAAKw9B,EAAYx9B,GACb,MAAO,WAEX,IAAIy9B,EAAOD,EAAYx9B,GACvBvB,OAAOsP,KAAK0vB,GAAMtY,SAAQ,SAAU5lB,GAChC,IAEI0U,EAFAypB,EAAMhI,EAAOn2B,GACbo+B,EAAOF,EAAKl+B,GAEZq+B,EAAiBh/B,MAAMs+B,QAAQS,IAAS/+B,MAAMs+B,QAAQQ,IAASC,EAAKh+B,SAAW+9B,EAAI/9B,OACnFk+B,GAAoBC,OAAgBJ,aAAe5F,OAAW8F,GAC9DL,GAAQM,IAAsBjB,EAASe,IAAS/+B,MAAMs+B,QAAQS,IAC1Df,EAASe,IACT1pB,EAAQypB,GAAY,CAAC,EACjB9+B,MAAMs+B,QAAQjpB,IAAUA,EAAMnV,eAAe,kBAC7Cq+B,EAAOlpB,EAAO,CAAC,EAAG0pB,EAAMJ,GAGxB7H,EAAOn2B,GAAO49B,EAAOlpB,EAAO,CAAC,EAAG0pB,EAAMJ,KAK1CtpB,EAAQ6pB,IAAaJ,GAAOj/B,OAAOsP,KAAK4vB,GAAMh+B,OAAS+9B,GAAY,GACnEhI,EAAOn2B,GAAO49B,EAAO,GAAIlpB,EAAO0pB,EAAMJ,IAI1C7H,EAAOn2B,GAAOo+B,CAEtB,GACJ,EACIH,EAAc99B,UACTM,EAAI,EAAGA,EAAIL,EAAQK,IACxB+P,EAAQ/P,GAEZ,OAAO01B,CACX,CAOO,SAASgH,EAAkBltB,GAC9B,OAAOA,OACX,CAOO,SAAS8sB,EAAY9sB,GACxB,YAAQ,IAAuBA,CACnC,CAOO,SAAStD,EAAYuC,GACxB,OAAOA,EAAc,IAAMusB,GAC/B,CAQO,SAAS+C,EAASC,EAAe17B,GACpC,IAAI27B,EAEJ,OAAO,WACH,IAAI59B,EAAQrB,KACRwJ,EAAO9I,UAKXmT,aAAaorB,GACbA,EAAM17B,YALM,WAER,OADA07B,EAAM,KACCD,EAActtB,MAAMrQ,EAAOmI,EACtC,GAEwBlG,EAC5B,CACJ,CAuCO,SAAS47B,EAAqBC,EAAOt5B,GAExC,OADWs5B,IACEt5B,KADFs5B,IAIO18B,WAJP08B,IAQAD,EARAC,EAQ0B72B,WAAYzC,EAErD,CAMO,SAASu5B,EAAWC,GACvB,IACI,MAAM,IAAIC,MAAMD,EACpB,CACA,MAAO56B,GACH,MAAMA,EAAE46B,QAAU,KAAO56B,EAAE86B,KAC/B,CACJ,CAsCO,SAASC,EAAWhvB,GACvB,IAAIkmB,EAASlmB,EAAQ,GACrB,OAAIkmB,EAAO1P,MAAM,gCACN0P,EAEJA,EAAS,IACpB,CAcO,SAASoI,IACZ,OAAO7C,CACX,CAsBO,SAASwD,EAAYt9B,EAASu4B,GAEjC,IAAIgF,EAA6B,iBAAd,EAA0Bj9B,SAASwgB,cAAc9gB,GAAWA,EAC/E,GAAIu9B,EAAK3D,GACL,IAAK,IAAIz5B,EAAK,EAAGyH,EAAK21B,EAAK3D,GAAYz5B,EAAKyH,EAAGpJ,OAAQ2B,IAAM,CACzD,IAAIgL,EAAOvD,EAAGzH,GACd,GAAIgL,aAAgBotB,EAChB,OAAOptB,CAEf,CAEJ,OAAO,IACX,CAwBO,SAASqyB,IAEZ,GAAwB,oBAAZ93B,OAAZ,CAIA,IAAI40B,EAAM,IAAIC,YAAY,GAE1B,OADgB70B,OAAO80B,UAAY90B,OAAO+0B,QACzBC,gBAAgBJ,EAJjC,CAKJ,C,mCCzaA,IAMImD,EAAiB,4BAGjBC,EAAyB,EACzBC,EAAuB,EAGvBC,EAAW,IACXC,EAAmB,iBAGnBC,EAAU,qBACVC,EAAW,iBACXC,EAAU,mBACVC,EAAU,gBACVC,EAAW,iBACXC,EAAU,oBACVC,EAAS,6BACTC,EAAS,eACTC,EAAY,kBACZC,EAAY,kBACZC,EAAa,mBACbC,EAAY,kBACZC,EAAS,eACTC,EAAY,kBACZC,EAAY,kBACZC,EAAa,mBAEbC,EAAiB,uBACjBC,EAAc,oBAYdC,EAAe,mDACfC,EAAgB,QAChBC,EAAe,MACfC,EAAa,mGASbC,EAAe,WAGfC,EAAe,8BAGfC,EAAW,mBAGXC,EAAiB,CAAC,EACtBA,EAjCiB,yBAiCYA,EAhCZ,yBAiCjBA,EAhCc,sBAgCYA,EA/BX,uBAgCfA,EA/Be,uBA+BYA,EA9BZ,uBA+BfA,EA9BsB,8BA8BYA,EA7BlB,wBA8BhBA,EA7BgB,yBA6BY,EAC5BA,EAAezB,GAAWyB,EAAexB,GACzCwB,EAAeT,GAAkBS,EAAevB,GAChDuB,EAAeR,GAAeQ,EAAetB,GAC7CsB,EAAerB,GAAYqB,EAAepB,GAC1CoB,EAAelB,GAAUkB,EAAejB,GACxCiB,EAAehB,GAAagB,EAAed,GAC3Cc,EAAeb,GAAUa,EAAeZ,GACxCY,EAAeV,IAAc,EAG7B,IAAIW,EAA8B,iBAAV,EAAAC,GAAsB,EAAAA,GAAU,EAAAA,EAAOniC,SAAWA,QAAU,EAAAmiC,EAGhFC,EAA0B,iBAARC,MAAoBA,MAAQA,KAAKriC,SAAWA,QAAUqiC,KAGxEC,EAAOJ,GAAcE,GAAYn8B,SAAS,cAATA,GAGjCs8B,EAA4CC,IAAYA,EAAQ1a,UAAY0a,EAG5EC,EAAaF,GAA4C74B,IAAWA,EAAOoe,UAAYpe,EAMvFg5B,EAHgBD,GAAcA,EAAWD,UAAYD,GAGtBL,EAAWS,QAG1CC,EAAY,WACd,IACE,OAAOF,GAAeA,EAAYG,QAAQ,OAC5C,CAAE,MAAO79B,GAAI,CACf,CAJe,GAOX89B,EAAmBF,GAAYA,EAASG,aAW5C,SAASC,EAASC,EAAOC,GAKvB,IAJA,IAAInzB,GAAS,EACT7O,EAAS+hC,EAAQA,EAAM/hC,OAAS,EAChC+1B,EAAS92B,MAAMe,KAEV6O,EAAQ7O,GACf+1B,EAAOlnB,GAASmzB,EAASD,EAAMlzB,GAAQA,EAAOkzB,GAEhD,OAAOhM,CACT,CAYA,SAASkM,EAAUF,EAAOG,GAIxB,IAHA,IAAIrzB,GAAS,EACT7O,EAAS+hC,EAAQA,EAAM/hC,OAAS,IAE3B6O,EAAQ7O,GACf,GAAIkiC,EAAUH,EAAMlzB,GAAQA,EAAOkzB,GACjC,OAAO,EAGX,OAAO,CACT,CA6DA,SAASI,EAAUC,GACjB,OAAO,SAASvyB,GACd,OAAOuyB,EAAKvyB,EACd,CACF,CAqBA,SAASwyB,EAAaxyB,GAGpB,IAAIkmB,GAAS,EACb,GAAa,MAATlmB,GAA0C,mBAAlBA,EAAMhM,SAChC,IACEkyB,KAAYlmB,EAAQ,GACtB,CAAE,MAAO/L,GAAI,CAEf,OAAOiyB,CACT,CASA,SAASuM,EAAW/4B,GAClB,IAAIsF,GAAS,EACTknB,EAAS92B,MAAMsK,EAAIg5B,MAKvB,OAHAh5B,EAAIic,SAAQ,SAAS3V,EAAOjQ,GAC1Bm2B,IAASlnB,GAAS,CAACjP,EAAKiQ,EAC1B,IACOkmB,CACT,CAuBA,SAASyM,EAAW3K,GAClB,IAAIhpB,GAAS,EACTknB,EAAS92B,MAAM44B,EAAI0K,MAKvB,OAHA1K,EAAIrS,SAAQ,SAAS3V,GACnBkmB,IAASlnB,GAASgB,CACpB,IACOkmB,CACT,CAGA,IASMsF,EAjCW+G,EAAM/6B,EAwBnBo7B,EAAaxjC,MAAMM,UACnBmjC,EAAY39B,SAASxF,UACrBojC,EAAc7jC,OAAOS,UAGrBqjC,GAAaxB,EAAK,sBAGlByB,IACExH,EAAM,SAASyH,KAAKF,IAAcA,GAAWx0B,MAAQw0B,GAAWx0B,KAAK20B,UAAY,KACvE,iBAAmB1H,EAAO,GAItC2H,GAAeN,EAAU7+B,SAGzB1E,GAAiBwjC,EAAYxjC,eAO7B8jC,GAAiBN,EAAY9+B,SAG7Bq/B,GAAa3yB,OAAO,IACtByyB,GAAariC,KAAKxB,IAAgBsR,QAjRjB,sBAiRuC,QACvDA,QAAQ,yDAA0D,SAAW,KAI5E0yB,GAAS/B,EAAK+B,OACdC,GAAahC,EAAKgC,WAClBC,GAAuBV,EAAYU,qBACnCz5B,GAAS64B,EAAW74B,OAGpB05B,IA/DalB,EA+DQtjC,OAAOsP,KA/DT/G,EA+DevI,OA9D7B,SAAS0K,GACd,OAAO44B,EAAK/6B,EAAUmC,GACxB,GA+DE+5B,GAAWC,GAAUpC,EAAM,YAC3BqC,GAAMD,GAAUpC,EAAM,OACtBsC,GAAUF,GAAUpC,EAAM,WAC1BuC,GAAMH,GAAUpC,EAAM,OACtBwC,GAAUJ,GAAUpC,EAAM,WAC1ByC,GAAeL,GAAU1kC,OAAQ,UAGjCglC,GAAqBC,GAASR,IAC9BS,GAAgBD,GAASN,IACzBQ,GAAoBF,GAASL,IAC7BQ,GAAgBH,GAASJ,IACzBQ,GAAoBJ,GAASH,IAG7BQ,GAAcjB,GAASA,GAAO5jC,eAAYqB,EAC1CyjC,GAAgBD,GAAcA,GAAYE,aAAU1jC,EACpD2jC,GAAiBH,GAAcA,GAAYvgC,cAAWjD,EAS1D,SAAS4jC,GAAKC,GACZ,IAAI51B,GAAS,EACT7O,EAASykC,EAAUA,EAAQzkC,OAAS,EAGxC,IADAX,KAAKqlC,UACI71B,EAAQ7O,GAAQ,CACvB,IAAI2kC,EAAQF,EAAQ51B,GACpBxP,KAAKw4B,IAAI8M,EAAM,GAAIA,EAAM,GAC3B,CACF,CAyFA,SAASC,GAAUH,GACjB,IAAI51B,GAAS,EACT7O,EAASykC,EAAUA,EAAQzkC,OAAS,EAGxC,IADAX,KAAKqlC,UACI71B,EAAQ7O,GAAQ,CACvB,IAAI2kC,EAAQF,EAAQ51B,GACpBxP,KAAKw4B,IAAI8M,EAAM,GAAIA,EAAM,GAC3B,CACF,CAuGA,SAASE,GAASJ,GAChB,IAAI51B,GAAS,EACT7O,EAASykC,EAAUA,EAAQzkC,OAAS,EAGxC,IADAX,KAAKqlC,UACI71B,EAAQ7O,GAAQ,CACvB,IAAI2kC,EAAQF,EAAQ51B,GACpBxP,KAAKw4B,IAAI8M,EAAM,GAAIA,EAAM,GAC3B,CACF,CAsFA,SAASG,GAASC,GAChB,IAAIl2B,GAAS,EACT7O,EAAS+kC,EAASA,EAAO/kC,OAAS,EAGtC,IADAX,KAAK2lC,SAAW,IAAIH,KACXh2B,EAAQ7O,GACfX,KAAK2F,IAAI+/B,EAAOl2B,GAEpB,CAyCA,SAASo2B,GAAMR,GACbplC,KAAK2lC,SAAW,IAAIJ,GAAUH,EAChC,CA2FA,SAASS,GAAcr1B,EAAOs1B,GAG5B,IAAIpP,EAAUwH,GAAQ1tB,IAAUu1B,GAAYv1B,GA7mB9C,SAAmBw1B,EAAGrD,GAIpB,IAHA,IAAInzB,GAAS,EACTknB,EAAS92B,MAAMomC,KAEVx2B,EAAQw2B,GACftP,EAAOlnB,GAASmzB,EAASnzB,GAE3B,OAAOknB,CACT,CAsmBMuP,CAAUz1B,EAAM7P,OAAQulC,QACxB,GAEAvlC,EAAS+1B,EAAO/1B,OAChBwlC,IAAgBxlC,EAEpB,IAAK,IAAIJ,KAAOiQ,GACTs1B,IAAahmC,GAAewB,KAAKkP,EAAOjQ,IACvC4lC,IAAuB,UAAP5lC,GAAmB6lC,GAAQ7lC,EAAKI,KACpD+1B,EAAO7sB,KAAKtJ,GAGhB,OAAOm2B,CACT,CAUA,SAAS2P,GAAa3D,EAAOniC,GAE3B,IADA,IAAII,EAAS+hC,EAAM/hC,OACZA,KACL,GAAI2lC,GAAG5D,EAAM/hC,GAAQ,GAAIJ,GACvB,OAAOI,EAGX,OAAQ,CACV,CA7YAwkC,GAAKjlC,UAAUmlC,MAnEf,WACErlC,KAAK2lC,SAAWnB,GAAeA,GAAa,MAAQ,CAAC,CACvD,EAkEAW,GAAKjlC,UAAkB,OAtDvB,SAAoBK,GAClB,OAAOP,KAAKumC,IAAIhmC,WAAeP,KAAK2lC,SAASplC,EAC/C,EAqDA4kC,GAAKjlC,UAAUu4B,IA1Cf,SAAiBl4B,GACf,IAAIyO,EAAOhP,KAAK2lC,SAChB,GAAInB,GAAc,CAChB,IAAI9N,EAAS1nB,EAAKzO,GAClB,OAAOm2B,IAAWkJ,OAAiBr+B,EAAYm1B,CACjD,CACA,OAAO52B,GAAewB,KAAK0N,EAAMzO,GAAOyO,EAAKzO,QAAOgB,CACtD,EAoCA4jC,GAAKjlC,UAAUqmC,IAzBf,SAAiBhmC,GACf,IAAIyO,EAAOhP,KAAK2lC,SAChB,OAAOnB,QAA6BjjC,IAAdyN,EAAKzO,GAAqBT,GAAewB,KAAK0N,EAAMzO,EAC5E,EAuBA4kC,GAAKjlC,UAAUs4B,IAXf,SAAiBj4B,EAAKiQ,GAGpB,OAFWxQ,KAAK2lC,SACXplC,GAAQikC,SAA0BjjC,IAAViP,EAAuBovB,EAAiBpvB,EAC9DxQ,IACT,EAmHAulC,GAAUrlC,UAAUmlC,MAjFpB,WACErlC,KAAK2lC,SAAW,EAClB,EAgFAJ,GAAUrlC,UAAkB,OArE5B,SAAyBK,GACvB,IAAIyO,EAAOhP,KAAK2lC,SACZn2B,EAAQ62B,GAAar3B,EAAMzO,GAE/B,QAAIiP,EAAQ,KAIRA,GADYR,EAAKrO,OAAS,EAE5BqO,EAAKw3B,MAELj8B,GAAOjJ,KAAK0N,EAAMQ,EAAO,IAEpB,EACT,EAwDA+1B,GAAUrlC,UAAUu4B,IA7CpB,SAAsBl4B,GACpB,IAAIyO,EAAOhP,KAAK2lC,SACZn2B,EAAQ62B,GAAar3B,EAAMzO,GAE/B,OAAOiP,EAAQ,OAAIjO,EAAYyN,EAAKQ,GAAO,EAC7C,EAyCA+1B,GAAUrlC,UAAUqmC,IA9BpB,SAAsBhmC,GACpB,OAAO8lC,GAAarmC,KAAK2lC,SAAUplC,IAAQ,CAC7C,EA6BAglC,GAAUrlC,UAAUs4B,IAjBpB,SAAsBj4B,EAAKiQ,GACzB,IAAIxB,EAAOhP,KAAK2lC,SACZn2B,EAAQ62B,GAAar3B,EAAMzO,GAO/B,OALIiP,EAAQ,EACVR,EAAKnF,KAAK,CAACtJ,EAAKiQ,IAEhBxB,EAAKQ,GAAO,GAAKgB,EAEZxQ,IACT,EAiGAwlC,GAAStlC,UAAUmlC,MA/DnB,WACErlC,KAAK2lC,SAAW,CACd,KAAQ,IAAIR,GACZ,IAAO,IAAKf,IAAOmB,IACnB,OAAU,IAAIJ,GAElB,EA0DAK,GAAStlC,UAAkB,OA/C3B,SAAwBK,GACtB,OAAOkmC,GAAWzmC,KAAMO,GAAa,OAAEA,EACzC,EA8CAilC,GAAStlC,UAAUu4B,IAnCnB,SAAqBl4B,GACnB,OAAOkmC,GAAWzmC,KAAMO,GAAKk4B,IAAIl4B,EACnC,EAkCAilC,GAAStlC,UAAUqmC,IAvBnB,SAAqBhmC,GACnB,OAAOkmC,GAAWzmC,KAAMO,GAAKgmC,IAAIhmC,EACnC,EAsBAilC,GAAStlC,UAAUs4B,IAVnB,SAAqBj4B,EAAKiQ,GAExB,OADAi2B,GAAWzmC,KAAMO,GAAKi4B,IAAIj4B,EAAKiQ,GACxBxQ,IACT,EAwDAylC,GAASvlC,UAAUyF,IAAM8/B,GAASvlC,UAAU2J,KAnB5C,SAAqB2G,GAEnB,OADAxQ,KAAK2lC,SAASnN,IAAIhoB,EAAOovB,GAClB5/B,IACT,EAiBAylC,GAASvlC,UAAUqmC,IANnB,SAAqB/1B,GACnB,OAAOxQ,KAAK2lC,SAASY,IAAI/1B,EAC3B,EA4FAo1B,GAAM1lC,UAAUmlC,MApEhB,WACErlC,KAAK2lC,SAAW,IAAIJ,EACtB,EAmEAK,GAAM1lC,UAAkB,OAxDxB,SAAqBK,GACnB,OAAOP,KAAK2lC,SAAiB,OAAEplC,EACjC,EAuDAqlC,GAAM1lC,UAAUu4B,IA5ChB,SAAkBl4B,GAChB,OAAOP,KAAK2lC,SAASlN,IAAIl4B,EAC3B,EA2CAqlC,GAAM1lC,UAAUqmC,IAhChB,SAAkBhmC,GAChB,OAAOP,KAAK2lC,SAASY,IAAIhmC,EAC3B,EA+BAqlC,GAAM1lC,UAAUs4B,IAnBhB,SAAkBj4B,EAAKiQ,GACrB,IAAIk2B,EAAQ1mC,KAAK2lC,SACjB,GAAIe,aAAiBnB,GAAW,CAC9B,IAAIoB,EAAQD,EAAMf,SAClB,IAAKvB,IAAQuC,EAAMhmC,OAASimC,IAE1B,OADAD,EAAM98B,KAAK,CAACtJ,EAAKiQ,IACVxQ,KAET0mC,EAAQ1mC,KAAK2lC,SAAW,IAAIH,GAASmB,EACvC,CAEA,OADAD,EAAMlO,IAAIj4B,EAAKiQ,GACRxQ,IACT,EA8DA,IA0ewB6mC,GAAUC,GA1e9BC,IA0eoBF,GAndxB,SAAoBG,EAAQrE,GAC1B,OAAOqE,GAAUC,GAAQD,EAAQrE,EAAU5zB,GAC7C,EAkdS,SAASm4B,EAAYvE,GAC1B,GAAkB,MAAduE,EACF,OAAOA,EAET,IAAKC,GAAYD,GACf,OAAOL,GAASK,EAAYvE,GAM9B,IAJA,IAAIhiC,EAASumC,EAAWvmC,OACpB6O,EAAQs3B,GAAYnmC,GAAU,EAC9BymC,EAAW3nC,OAAOynC,IAEdJ,GAAYt3B,MAAYA,EAAQ7O,KACa,IAA/CgiC,EAASyE,EAAS53B,GAAQA,EAAO43B,KAIvC,OAAOF,CACT,GA/eED,GAyfJ,SAAuBH,GACrB,OAAO,SAASE,EAAQrE,EAAU0E,GAMhC,IALA,IAAI73B,GAAS,EACT43B,EAAW3nC,OAAOunC,GAClBzN,EAAQ8N,EAASL,GACjBrmC,EAAS44B,EAAM54B,OAEZA,KAAU,CACf,IAAIJ,EAAMg5B,EAAMuN,EAAYnmC,IAAW6O,GACvC,IAA+C,IAA3CmzB,EAASyE,EAAS7mC,GAAMA,EAAK6mC,GAC/B,KAEJ,CACA,OAAOJ,CACT,CACF,CAxgBcM,GAsBd,SAASC,GAAQP,EAAQQ,GAMvB,IAHA,IAAIh4B,EAAQ,EACR7O,GAHJ6mC,EAAOC,GAAMD,EAAMR,GAAU,CAACQ,GAAQE,GAASF,IAG7B7mC,OAED,MAAVqmC,GAAkBx3B,EAAQ7O,GAC/BqmC,EAASA,EAAOW,GAAMH,EAAKh4B,OAE7B,OAAQA,GAASA,GAAS7O,EAAUqmC,OAASzlC,CAC/C,CAqBA,SAASqmC,GAAUZ,EAAQzmC,GACzB,OAAiB,MAAVymC,GAAkBzmC,KAAOd,OAAOunC,EACzC,CAiBA,SAASa,GAAYr3B,EAAOs3B,EAAOC,EAAYC,EAASzI,GACtD,OAAI/uB,IAAUs3B,IAGD,MAATt3B,GAA0B,MAATs3B,IAAmBlK,GAASptB,KAAWy3B,GAAaH,GAChEt3B,GAAUA,GAASs3B,GAAUA,EAoBxC,SAAyBd,EAAQc,EAAOI,EAAWH,EAAYC,EAASzI,GACtE,IAAI4I,EAAWjK,GAAQ8I,GACnBoB,EAAWlK,GAAQ4J,GACnBO,EAASnI,EACToI,EAASpI,EAERiI,IAEHE,GADAA,EAASE,GAAOvB,KACG/G,EAAUS,EAAY2H,GAEtCD,IAEHE,GADAA,EAASC,GAAOT,KACG7H,EAAUS,EAAY4H,GAE3C,IAAIE,EAAWH,GAAU3H,IAAcsC,EAAagE,GAChDyB,EAAWH,GAAU5H,IAAcsC,EAAa8E,GAChDY,EAAYL,GAAUC,EAE1B,GAAII,IAAcF,EAEhB,OADAjJ,IAAUA,EAAQ,IAAIqG,IACduC,GAAY3F,GAAawE,GAC7B2B,GAAY3B,EAAQc,EAAOI,EAAWH,EAAYC,EAASzI,GAifnE,SAAoByH,EAAQc,EAAOc,EAAKV,EAAWH,EAAYC,EAASzI,GACtE,OAAQqJ,GACN,KAAK1H,EACH,GAAK8F,EAAO6B,YAAcf,EAAMe,YAC3B7B,EAAO8B,YAAchB,EAAMgB,WAC9B,OAAO,EAET9B,EAASA,EAAO+B,OAChBjB,EAAQA,EAAMiB,OAEhB,KAAK9H,EACH,QAAK+F,EAAO6B,YAAcf,EAAMe,aAC3BX,EAAU,IAAInE,GAAWiD,GAAS,IAAIjD,GAAW+D,KAKxD,KAAK3H,EACL,KAAKC,EACL,KAAKK,EAGH,OAAO6F,IAAIU,GAASc,GAEtB,KAAKzH,EACH,OAAO2G,EAAO9iC,MAAQ4jC,EAAM5jC,MAAQ8iC,EAAO3H,SAAWyI,EAAMzI,QAE9D,KAAKuB,EACL,KAAKE,EAIH,OAAOkG,GAAWc,EAAQ,GAE5B,KAAKtH,EACH,IAAIwI,EAAU/F,EAEhB,KAAKpC,EACH,IAAIoI,EAAYjB,EAAUlI,EAG1B,GAFAkJ,IAAYA,EAAU7F,GAElB6D,EAAO9D,MAAQ4E,EAAM5E,OAAS+F,EAChC,OAAO,EAGT,IAAIC,EAAU3J,EAAM9G,IAAIuO,GACxB,GAAIkC,EACF,OAAOA,GAAWpB,EAEpBE,GAAWnI,EAGXN,EAAM/G,IAAIwO,EAAQc,GAClB,IAAIpR,EAASiS,GAAYK,EAAQhC,GAASgC,EAAQlB,GAAQI,EAAWH,EAAYC,EAASzI,GAE1F,OADAA,EAAc,OAAEyH,GACTtQ,EAET,KAAKqK,EACH,GAAIiE,GACF,OAAOA,GAAc1jC,KAAK0lC,IAAWhC,GAAc1jC,KAAKwmC,GAG9D,OAAO,CACT,CA/iBQqB,CAAWnC,EAAQc,EAAOO,EAAQH,EAAWH,EAAYC,EAASzI,GAExE,KAAMyI,EAAUlI,GAAuB,CACrC,IAAIsJ,EAAeZ,GAAY1oC,GAAewB,KAAK0lC,EAAQ,eACvDqC,EAAeZ,GAAY3oC,GAAewB,KAAKwmC,EAAO,eAE1D,GAAIsB,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAepC,EAAOx2B,QAAUw2B,EAC/CuC,EAAeF,EAAevB,EAAMt3B,QAAUs3B,EAGlD,OADAvI,IAAUA,EAAQ,IAAIqG,IACfsC,EAAUoB,EAAcC,EAAcxB,EAAYC,EAASzI,EACpE,CACF,CACA,IAAKmJ,EACH,OAAO,EAGT,OADAnJ,IAAUA,EAAQ,IAAIqG,IA8iBxB,SAAsBoB,EAAQc,EAAOI,EAAWH,EAAYC,EAASzI,GACnE,IAAI0J,EAAYjB,EAAUlI,EACtB0J,EAAWz6B,GAAKi4B,GAChByC,EAAYD,EAAS7oC,OACrB+oC,EAAW36B,GAAK+4B,GAChB6B,EAAYD,EAAS/oC,OAEzB,GAAI8oC,GAAaE,IAAcV,EAC7B,OAAO,EAET,IAAIz5B,EAAQi6B,EACZ,KAAOj6B,KAAS,CACd,IAAIjP,EAAMipC,EAASh6B,GACnB,KAAMy5B,EAAY1oC,KAAOunC,EAAQhoC,GAAewB,KAAKwmC,EAAOvnC,IAC1D,OAAO,CAEX,CAEA,IAAI2oC,EAAU3J,EAAM9G,IAAIuO,GACxB,GAAIkC,GAAW3J,EAAM9G,IAAIqP,GACvB,OAAOoB,GAAWpB,EAEpB,IAAIpR,GAAS,EACb6I,EAAM/G,IAAIwO,EAAQc,GAClBvI,EAAM/G,IAAIsP,EAAOd,GAEjB,IAAI4C,EAAWX,EACf,OAASz5B,EAAQi6B,GAAW,CAE1B,IAAIp5B,EAAW22B,EADfzmC,EAAMipC,EAASh6B,IAEXq6B,EAAW/B,EAAMvnC,GAErB,GAAIwnC,EACF,IAAI+B,EAAWb,EACXlB,EAAW8B,EAAUx5B,EAAU9P,EAAKunC,EAAOd,EAAQzH,GACnDwI,EAAW13B,EAAUw5B,EAAUtpC,EAAKymC,EAAQc,EAAOvI,GAGzD,UAAmBh+B,IAAbuoC,EACGz5B,IAAaw5B,GAAY3B,EAAU73B,EAAUw5B,EAAU9B,EAAYC,EAASzI,GAC7EuK,GACD,CACLpT,GAAS,EACT,KACF,CACAkT,IAAaA,EAAkB,eAAPrpC,EAC1B,CACA,GAAIm2B,IAAWkT,EAAU,CACvB,IAAIG,EAAU/C,EAAO/mC,YACjB+pC,EAAUlC,EAAM7nC,YAGhB8pC,GAAWC,KACV,gBAAiBhD,MAAU,gBAAiBc,IACzB,mBAAXiC,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,IACvDtT,GAAS,EAEb,CAGA,OAFA6I,EAAc,OAAEyH,GAChBzH,EAAc,OAAEuI,GACTpR,CACT,CA3mBSuT,CAAajD,EAAQc,EAAOI,EAAWH,EAAYC,EAASzI,EACrE,CA3DS2K,CAAgB15B,EAAOs3B,EAAOD,GAAaE,EAAYC,EAASzI,GACzE,CA0HA,SAAS4K,GAAa35B,GACpB,SAAKotB,GAASptB,IAqtBhB,SAAkBuyB,GAChB,QAASS,IAAeA,MAAcT,CACxC,CAvtB0BqH,CAAS55B,MAGlB65B,GAAW75B,IAAUwyB,EAAaxyB,GAAUqzB,GAAarC,GACzDrwB,KAAKuzB,GAASl0B,GAC/B,CAqBA,SAAS85B,GAAa95B,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACK+5B,GAEW,iBAAT/5B,EACF0tB,GAAQ1tB,GAsEnB,SAA6Bg3B,EAAMgD,GACjC,GAAI/C,GAAMD,IAASiD,GAAmBD,GACpC,OAAOE,GAAwB/C,GAAMH,GAAOgD,GAE9C,OAAO,SAASxD,GACd,IAAI32B,EAspCR,SAAa22B,EAAQQ,EAAMlR,GACzB,IAAII,EAAmB,MAAVsQ,OAAiBzlC,EAAYgmC,GAAQP,EAAQQ,GAC1D,YAAkBjmC,IAAXm1B,EAAuBJ,EAAeI,CAC/C,CAzpCmB+B,CAAIuO,EAAQQ,GAC3B,YAAqBjmC,IAAb8O,GAA0BA,IAAam6B,EAorCnD,SAAexD,EAAQQ,GACrB,OAAiB,MAAVR,GA/pBT,SAAiBA,EAAQQ,EAAMmD,GAC7BnD,EAAOC,GAAMD,EAAMR,GAAU,CAACQ,GAAQE,GAASF,GAE/C,IAAI9Q,EACAlnB,GAAS,EACT7O,EAAS6mC,EAAK7mC,OAElB,OAAS6O,EAAQ7O,GAAQ,CACvB,IAAIJ,EAAMonC,GAAMH,EAAKh4B,IACrB,KAAMknB,EAAmB,MAAVsQ,GAAkB2D,EAAQ3D,EAAQzmC,IAC/C,MAEFymC,EAASA,EAAOzmC,EAClB,CACA,GAAIm2B,EACF,OAAOA,EAEL/1B,EAASqmC,EAASA,EAAOrmC,OAAS,EACtC,QAASA,GAAUiqC,GAASjqC,IAAWylC,GAAQ7lC,EAAKI,KACjDu9B,GAAQ8I,IAAWjB,GAAYiB,GACpC,CA2oB2B6D,CAAQ7D,EAAQQ,EAAMI,GACjD,CArrCQkD,CAAM9D,EAAQQ,GACdK,GAAY2C,EAAUn6B,OAAU9O,EAAWs+B,EAAyBC,EAC1E,CACF,CA/EQiL,CAAoBv6B,EAAM,GAAIA,EAAM,IAmD5C,SAAqBysB,GACnB,IAAI+N,EAweN,SAAsBhE,GACpB,IAAItQ,EAAS3nB,GAAKi4B,GACdrmC,EAAS+1B,EAAO/1B,OAEpB,KAAOA,KAAU,CACf,IAAIJ,EAAMm2B,EAAO/1B,GACb6P,EAAQw2B,EAAOzmC,GAEnBm2B,EAAO/1B,GAAU,CAACJ,EAAKiQ,EAAOi6B,GAAmBj6B,GACnD,CACA,OAAOkmB,CACT,CAnfkBuU,CAAahO,GAC7B,GAAwB,GAApB+N,EAAUrqC,QAAeqqC,EAAU,GAAG,GACxC,OAAON,GAAwBM,EAAU,GAAG,GAAIA,EAAU,GAAG,IAE/D,OAAO,SAAShE,GACd,OAAOA,IAAW/J,GAnJtB,SAAqB+J,EAAQ/J,EAAQ+N,EAAWjD,GAC9C,IAAIv4B,EAAQw7B,EAAUrqC,OAClBA,EAAS6O,EACT07B,GAAgBnD,EAEpB,GAAc,MAAVf,EACF,OAAQrmC,EAGV,IADAqmC,EAASvnC,OAAOunC,GACTx3B,KAAS,CACd,IAAIR,EAAOg8B,EAAUx7B,GACrB,GAAK07B,GAAgBl8B,EAAK,GAClBA,EAAK,KAAOg4B,EAAOh4B,EAAK,MACtBA,EAAK,KAAMg4B,GAEnB,OAAO,CAEX,CACA,OAASx3B,EAAQ7O,GAAQ,CAEvB,IAAIJ,GADJyO,EAAOg8B,EAAUx7B,IACF,GACXa,EAAW22B,EAAOzmC,GAClBiqC,EAAWx7B,EAAK,GAEpB,GAAIk8B,GAAgBl8B,EAAK,IACvB,QAAiBzN,IAAb8O,KAA4B9P,KAAOymC,GACrC,OAAO,MAEJ,CACL,IAAIzH,EAAQ,IAAIqG,GAChB,GAAImC,EACF,IAAIrR,EAASqR,EAAW13B,EAAUm6B,EAAUjqC,EAAKymC,EAAQ/J,EAAQsC,GAEnE,UAAiBh+B,IAAXm1B,EACEmR,GAAY2C,EAAUn6B,EAAU03B,EAAYlI,EAAyBC,EAAsBP,GAC3F7I,GAEN,OAAO,CAEX,CACF,CACA,OAAO,CACT,CAyGgCyU,CAAYnE,EAAQ/J,EAAQ+N,EAC1D,CACF,CA1DQI,CAAY56B,GA60CXi3B,GADSD,EA10CAh3B,IA17BIjQ,EAqwEconC,GAAMH,GApwEjC,SAASR,GACd,OAAiB,MAAVA,OAAiBzlC,EAAYylC,EAAOzmC,EAC7C,GAqiCF,SAA0BinC,GACxB,OAAO,SAASR,GACd,OAAOO,GAAQP,EAAQQ,EACzB,CACF,CAytCmD6D,CAAiB7D,GADpE,IAAkBA,EApwEIjnC,CA27BtB,CASA,SAAS+qC,GAAStE,GAChB,GA8qBIuE,GADe/6B,EA7qBFw2B,IA8qBGx2B,EAAMvQ,YACtBurC,EAAwB,mBAARD,GAAsBA,EAAKrrC,WAAcojC,EAEtD9yB,IAAUg7B,EAhrBf,OAAOvH,GAAW+C,GA4qBtB,IAAqBx2B,EACf+6B,EACAC,EA5qBA9U,EAAS,GACb,IAAK,IAAIn2B,KAAOd,OAAOunC,GACjBlnC,GAAewB,KAAK0lC,EAAQzmC,IAAe,eAAPA,GACtCm2B,EAAO7sB,KAAKtJ,GAGhB,OAAOm2B,CACT,CAkEA,SAAS+U,GAAYvE,EAAYwE,EAAWC,GAC1C,IAAIn8B,GAAS,EACbk8B,EAAYjJ,EAASiJ,EAAU/qC,OAAS+qC,EAAY,CAACnB,IAAWzH,EAAUwH,KAE1E,IAAI5T,EA5DN,SAAiBwQ,EAAYvE,GAC3B,IAAInzB,GAAS,EACTknB,EAASyQ,GAAYD,GAActnC,MAAMsnC,EAAWvmC,QAAU,GAKlE,OAHAomC,GAASG,GAAY,SAAS12B,EAAOjQ,EAAK2mC,GACxCxQ,IAASlnB,GAASmzB,EAASnyB,EAAOjQ,EAAK2mC,EACzC,IACOxQ,CACT,CAoDekV,CAAQ1E,GAAY,SAAS12B,EAAOjQ,EAAK2mC,GAIpD,MAAO,CAAE,SAHMzE,EAASiJ,GAAW,SAAS/I,GAC1C,OAAOA,EAASnyB,EAClB,IAC+B,QAAWhB,EAAO,MAASgB,EAC5D,IAEA,OA5gCF,SAAoBkyB,EAAOmJ,GACzB,IAAIlrC,EAAS+hC,EAAM/hC,OAGnB,IADA+hC,EAAMoJ,KAAKD,GACJlrC,KACL+hC,EAAM/hC,GAAU+hC,EAAM/hC,GAAQ6P,MAEhC,OAAOkyB,CACT,CAogCSqJ,CAAWrV,GAAQ,SAASsQ,EAAQc,GACzC,OAoGJ,SAAyBd,EAAQc,EAAO6D,GACtC,IAAIn8B,GAAS,EACTw8B,EAAchF,EAAOiF,SACrBC,EAAcpE,EAAMmE,SACpBtrC,EAASqrC,EAAYrrC,OACrBwrC,EAAeR,EAAOhrC,OAE1B,OAAS6O,EAAQ7O,GAAQ,CACvB,IAAI+1B,EAAS0V,GAAiBJ,EAAYx8B,GAAQ08B,EAAY18B,IAC9D,GAAIknB,EACF,OAAIlnB,GAAS28B,EACJzV,EAGFA,GAAmB,QADdiV,EAAOn8B,IACiB,EAAI,EAE5C,CAQA,OAAOw3B,EAAOx3B,MAAQs4B,EAAMt4B,KAC9B,CA7HW68B,CAAgBrF,EAAQc,EAAO6D,EACxC,GACF,CA0CA,SAASjE,GAASl3B,GAChB,OAAO0tB,GAAQ1tB,GAASA,EAAQ87B,GAAa97B,EAC/C,CAUA,SAAS47B,GAAiB57B,EAAOs3B,GAC/B,GAAIt3B,IAAUs3B,EAAO,CACnB,IAAIyE,OAAyBhrC,IAAViP,EACfg8B,EAAsB,OAAVh8B,EACZi8B,EAAiBj8B,GAAUA,EAC3Bk8B,EAAcC,GAASn8B,GAEvBo8B,OAAyBrrC,IAAVumC,EACf+E,EAAsB,OAAV/E,EACZgF,EAAiBhF,GAAUA,EAC3BiF,EAAcJ,GAAS7E,GAE3B,IAAM+E,IAAcE,IAAgBL,GAAel8B,EAAQs3B,GACtD4E,GAAeE,GAAgBE,IAAmBD,IAAcE,GAChEP,GAAaI,GAAgBE,IAC5BP,GAAgBO,IACjBL,EACH,OAAO,EAET,IAAMD,IAAcE,IAAgBK,GAAev8B,EAAQs3B,GACtDiF,GAAeR,GAAgBE,IAAmBD,IAAcE,GAChEG,GAAaN,GAAgBE,IAC5BG,GAAgBH,IACjBK,EACH,OAAQ,CAEZ,CACA,OAAO,CACT,CA8GA,SAASnE,GAAYjG,EAAOoF,EAAOI,EAAWH,EAAYC,EAASzI,GACjE,IAAI0J,EAAYjB,EAAUlI,EACtBkN,EAAYtK,EAAM/hC,OAClBgpC,EAAY7B,EAAMnnC,OAEtB,GAAIqsC,GAAarD,KAAeV,GAAaU,EAAYqD,GACvD,OAAO,EAGT,IAAI9D,EAAU3J,EAAM9G,IAAIiK,GACxB,GAAIwG,GAAW3J,EAAM9G,IAAIqP,GACvB,OAAOoB,GAAWpB,EAEpB,IAAIt4B,GAAS,EACTknB,GAAS,EACTuW,EAAQjF,EAAUnI,EAA0B,IAAI4F,QAAWlkC,EAM/D,IAJAg+B,EAAM/G,IAAIkK,EAAOoF,GACjBvI,EAAM/G,IAAIsP,EAAOpF,KAGRlzB,EAAQw9B,GAAW,CAC1B,IAAIE,EAAWxK,EAAMlzB,GACjBq6B,EAAW/B,EAAMt4B,GAErB,GAAIu4B,EACF,IAAI+B,EAAWb,EACXlB,EAAW8B,EAAUqD,EAAU19B,EAAOs4B,EAAOpF,EAAOnD,GACpDwI,EAAWmF,EAAUrD,EAAUr6B,EAAOkzB,EAAOoF,EAAOvI,GAE1D,QAAiBh+B,IAAbuoC,EAAwB,CAC1B,GAAIA,EACF,SAEFpT,GAAS,EACT,KACF,CAEA,GAAIuW,GACF,IAAKrK,EAAUkF,GAAO,SAAS+B,EAAUsD,GACnC,IAAKF,EAAK1G,IAAI4G,KACTD,IAAarD,GAAY3B,EAAUgF,EAAUrD,EAAU9B,EAAYC,EAASzI,IAC/E,OAAO0N,EAAKtnC,IAAIwnC,EAEpB,IAAI,CACNzW,GAAS,EACT,KACF,OACK,GACDwW,IAAarD,IACX3B,EAAUgF,EAAUrD,EAAU9B,EAAYC,EAASzI,GACpD,CACL7I,GAAS,EACT,KACF,CACF,CAGA,OAFA6I,EAAc,OAAEmD,GAChBnD,EAAc,OAAEuI,GACTpR,CACT,CA2KA,SAAS+P,GAAWv8B,EAAK3J,GACvB,IAmJiBiQ,EACbqE,EApJA7F,EAAO9E,EAAIy7B,SACf,OAoJgB,WADZ9wB,SADarE,EAlJAjQ,KAoJmB,UAARsU,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVrE,EACU,OAAVA,GArJDxB,EAAmB,iBAAPzO,EAAkB,SAAW,QACzCyO,EAAK9E,GACX,CA8BA,SAASi6B,GAAU6C,EAAQzmC,GACzB,IAAIiQ,EAv6CN,SAAkBw2B,EAAQzmC,GACxB,OAAiB,MAAVymC,OAAiBzlC,EAAYylC,EAAOzmC,EAC7C,CAq6Cc48B,CAAS6J,EAAQzmC,GAC7B,OAAO4pC,GAAa35B,GAASA,OAAQjP,CACvC,CASA,IAAIgnC,GApwBJ,SAAoB/3B,GAClB,OAAOozB,GAAetiC,KAAKkP,EAC7B,EAo0BA,SAAS41B,GAAQ51B,EAAO7P,GAEtB,SADAA,EAAmB,MAAVA,EAAiBq/B,EAAmBr/B,KAE1B,iBAAT6P,GAAqBixB,EAAStwB,KAAKX,KAC1CA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQ7P,CAC7C,CAUA,SAAS8mC,GAAMj3B,EAAOw2B,GACpB,GAAI9I,GAAQ1tB,GACV,OAAO,EAET,IAAIqE,SAAcrE,EAClB,QAAY,UAARqE,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAATrE,IAAiBm8B,GAASn8B,MAGvB4wB,EAAcjwB,KAAKX,KAAW2wB,EAAahwB,KAAKX,IAC1C,MAAVw2B,GAAkBx2B,KAAS/Q,OAAOunC,GACvC,CAiDA,SAASyD,GAAmBj6B,GAC1B,OAAOA,GAAUA,IAAUotB,GAASptB,EACtC,CAWA,SAASk6B,GAAwBnqC,EAAKiqC,GACpC,OAAO,SAASxD,GACd,OAAc,MAAVA,IAGGA,EAAOzmC,KAASiqC,SACPjpC,IAAbipC,GAA2BjqC,KAAOd,OAAOunC,IAC9C,CACF,EA9JK9C,IAAYqE,GAAO,IAAIrE,GAAS,IAAIkJ,YAAY,MAAQlM,GACxDkD,IAAOmE,GAAO,IAAInE,KAAQ5D,GAC1B6D,IAAWkE,GAAOlE,GAAQgJ,YAAc1M,GACxC2D,IAAOiE,GAAO,IAAIjE,KAAQzD,GAC1B0D,IAAWgE,GAAO,IAAIhE,KAAYvD,KACrCuH,GAAS,SAAS/3B,GAChB,IAAIkmB,EAASkN,GAAetiC,KAAKkP,GAC7B+6B,EAAO7U,GAAUgK,EAAYlwB,EAAMvQ,iBAAcsB,EACjD+rC,EAAa/B,EAAO7G,GAAS6G,QAAQhqC,EAEzC,GAAI+rC,EACF,OAAQA,GACN,KAAK7I,GAAoB,OAAOvD,EAChC,KAAKyD,GAAe,OAAOnE,EAC3B,KAAKoE,GAAmB,OAAOjE,EAC/B,KAAKkE,GAAe,OAAOhE,EAC3B,KAAKiE,GAAmB,OAAO9D,EAGnC,OAAOtK,CACT,GAmJF,IAAI4V,GAAeiB,IAAQ,SAASC,GA2dpC,IAAkBh9B,EA1dhBg9B,EA2dgB,OADAh9B,EA1dEg9B,GA2dK,GArkCzB,SAAsBh9B,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIm8B,GAASn8B,GACX,OAAO00B,GAAiBA,GAAe5jC,KAAKkP,GAAS,GAEvD,IAAIkmB,EAAUlmB,EAAQ,GACtB,MAAkB,KAAVkmB,GAAkB,EAAIlmB,IAAWuvB,EAAY,KAAOrJ,CAC9D,CA2jC8B+W,CAAaj9B,GAzdzC,IAAIkmB,EAAS,GAOb,OANI2K,EAAalwB,KAAKq8B,IACpB9W,EAAO7sB,KAAK,IAEd2jC,EAAOp8B,QAAQkwB,GAAY,SAASta,EAAO0mB,EAAQC,EAAOH,GACxD9W,EAAO7sB,KAAK8jC,EAAQH,EAAOp8B,QAAQmwB,EAAc,MAASmM,GAAU1mB,EACtE,IACO0P,CACT,IASA,SAASiR,GAAMn3B,GACb,GAAoB,iBAATA,GAAqBm8B,GAASn8B,GACvC,OAAOA,EAET,IAAIkmB,EAAUlmB,EAAQ,GACtB,MAAkB,KAAVkmB,GAAkB,EAAIlmB,IAAWuvB,EAAY,KAAOrJ,CAC9D,CASA,SAASgO,GAAS3B,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOY,GAAariC,KAAKyhC,EAC3B,CAAE,MAAOt+B,GAAI,CACb,IACE,OAAQs+B,EAAO,EACjB,CAAE,MAAOt+B,GAAI,CACf,CACA,MAAO,EACT,CAyFA,SAAS8oC,GAAQxK,EAAM6K,GACrB,GAAmB,mBAAR7K,GAAuB6K,GAA+B,mBAAZA,EACnD,MAAM,IAAIC,UAv8DQ,uBAy8DpB,IAAIC,EAAW,WACb,IAAItkC,EAAO9I,UACPH,EAAMqtC,EAAWA,EAASl8B,MAAM1R,KAAMwJ,GAAQA,EAAK,GACnDk9B,EAAQoH,EAASpH,MAErB,GAAIA,EAAMH,IAAIhmC,GACZ,OAAOmmC,EAAMjO,IAAIl4B,GAEnB,IAAIm2B,EAASqM,EAAKrxB,MAAM1R,KAAMwJ,GAE9B,OADAskC,EAASpH,MAAQA,EAAMlO,IAAIj4B,EAAKm2B,GACzBA,CACT,EAEA,OADAoX,EAASpH,MAAQ,IAAK6G,GAAQQ,OAASvI,IAChCsI,CACT,CAqCA,SAASxH,GAAG91B,EAAOs3B,GACjB,OAAOt3B,IAAUs3B,GAAUt3B,GAAUA,GAASs3B,GAAUA,CAC1D,CAoBA,SAAS/B,GAAYv1B,GAEnB,OAmFF,SAA2BA,GACzB,OAAOy3B,GAAaz3B,IAAU22B,GAAY32B,EAC5C,CArFSw9B,CAAkBx9B,IAAU1Q,GAAewB,KAAKkP,EAAO,aAC1DwzB,GAAqB1iC,KAAKkP,EAAO,WAAaozB,GAAetiC,KAAKkP,IAAUyvB,EAClF,CA5DAsN,GAAQQ,MAAQvI,GAqFhB,IAAItH,GAAUt+B,MAAMs+B,QA2BpB,SAASiJ,GAAY32B,GACnB,OAAgB,MAATA,GAAiBo6B,GAASp6B,EAAM7P,UAAY0pC,GAAW75B,EAChE,CAgDA,SAAS65B,GAAW75B,GAGlB,IAAIo4B,EAAMhL,GAASptB,GAASozB,GAAetiC,KAAKkP,GAAS,GACzD,OAAOo4B,GAAOtI,GAAWsI,GAAOrI,CAClC,CA4BA,SAASqK,GAASp6B,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAASwvB,CAC7C,CA2BA,SAASpC,GAASptB,GAChB,IAAIqE,SAAcrE,EAClB,QAASA,IAAkB,UAARqE,GAA4B,YAARA,EACzC,CA0BA,SAASozB,GAAaz3B,GACpB,QAASA,GAAyB,iBAATA,CAC3B,CAmBA,SAASm8B,GAASn8B,GAChB,MAAuB,iBAATA,GACXy3B,GAAaz3B,IAAUozB,GAAetiC,KAAKkP,IAAUuwB,CAC1D,CAmBA,IAAIyB,GAAeD,EAAmBO,EAAUP,GAnsChD,SAA0B/xB,GACxB,OAAOy3B,GAAaz3B,IAClBo6B,GAASp6B,EAAM7P,WAAa+gC,EAAekC,GAAetiC,KAAKkP,GACnE,EAmzCA,SAASzB,GAAKi4B,GACZ,OAAOG,GAAYH,GAAUnB,GAAcmB,GAAUsE,GAAStE,EAChE,CAkBA,SAASuD,GAAS/5B,GAChB,OAAOA,CACT,CA4BArH,EAAO84B,QA7hBP,SAAiBiF,EAAYwE,EAAWC,EAAQsC,GAC9C,OAAkB,MAAd/G,EACK,IAEJhJ,GAAQwN,KACXA,EAAyB,MAAbA,EAAoB,GAAK,CAACA,IAGnCxN,GADLyN,EAASsC,OAAQ1sC,EAAYoqC,KAE3BA,EAAmB,MAAVA,EAAiB,GAAK,CAACA,IAE3BF,GAAYvE,EAAYwE,EAAWC,GAC5C,C","sources":["webpack:///./node_modules/@syncfusion/ej2-base/src/animation.js?","webpack:///./node_modules/@syncfusion/ej2-base/src/component.js?","webpack:///./node_modules/@syncfusion/ej2-base/src/module-loader.js?","webpack:///./node_modules/@syncfusion/ej2-base/src/draggable.js?","webpack:///./node_modules/@syncfusion/ej2-base/src/droppable.js?","webpack:///./node_modules/@syncfusion/ej2-base/src/touch.js?","webpack:///./node_modules/@syncfusion/ej2-base/src/base.js?","webpack:///./node_modules/@syncfusion/ej2-base/src/dom.js?","webpack:///./node_modules/@syncfusion/ej2-base/src/hijri-parser.js?","webpack:///./node_modules/@syncfusion/ej2-base/src/internationalization.js?","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/intl-base.js?","webpack:///./node_modules/@syncfusion/ej2-base/src/notify-property-change.js?","webpack:///./node_modules/@syncfusion/ej2-base/src/template-engine.js?","webpack:///./node_modules/@syncfusion/ej2-base/src/util.js?","webpack:///./node_modules/lodash.orderby/index.js?"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @return {void}\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n * @param {AnimationModel} model\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n };\n /**\n * Triggers animation\n * @param {AnimationModel} model\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var startTime = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element \n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame \n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n * @param {AnimationModel} options\n * @returns {AnimationModel}\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n */\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n * @private\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n * @private\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n * @private\n * @param HTMLElement element - Target element\n * @param RippleOptions rippleOptions - Ripple options .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return Function;\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n * @param {MouseEvent} e\n * @param {rippleArgs} eventArgs\n * @returns {void}\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean}\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { VirtualDOM } from './virtual-dom';\nimport { getRandomId } from './template-engine';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\n/* istanbul ignore next */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n ;\n /**\n * Destroys the sub modules while destroying the widget\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n /* istanbul ignore next */\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n */\n /* istanbul ignore next */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n */\n /* istanbul ignore next */\n //tslint:disable:no-any\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Appends the control within the given HTML element\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // tslint:disable-next-line:no-any\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n ;\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @return {void}\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @return {void}\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @return {void}\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n ;\n /**\n * Dynamically injects the required modules to the component.\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[i]) === -1) {\n this.prototype.injectedModules.push(moduleList[i]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n * @private\n */\n /* istanbul ignore next */\n //tslint:disable:no-any\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n if (isVDOM && this.isReactHybrid) {\n if (prop) {\n prop = {};\n }\n prop['data-id'] = getRandomId();\n return VirtualDOM.createElement(tagName, prop);\n }\n else {\n return createElement(tagName, prop);\n }\n };\n /**\n *\n * @param handler - handler to be triggered after state Updated.\n * @param argument - Arguments to be passed to caller.\n * @private\n */\n /* istanbul ignore next */\n //tslint:disable:no-any\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n //tslint:disable:no-any\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n //tslint:disable-next-line\n Component.prototype.renderReactTemplates = function () {\n //No Code\n };\n //tslint:disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // tslint:disable-next-line:no-any\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n return new RegExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection \n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n ;\n /**\n * Inject required modules in component library\n * @return {void}\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[i];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n * @return {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Removes all unused modules\n * @param {ModuleDeclaration[]} moduleList\n * @returns {void}\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n * @param {string} name\n * @returns {string}\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n * @param {string} modName\n * @returns {boolean}\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar positionProp = ['offsetLeft', 'offsetTop'];\nvar axisMapper = ['x', 'y'];\nvar axisValueMapper = ['left', 'top'];\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n /* tslint:disable no-any */\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[axis]] > element[client[axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[i]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10),\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n var marginTop = parseFloat(styles.marginTop);\n if (this.dragArea) {\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? this.dragElePosition.left : (left - iLeft);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += this.element.offsetTop;\n if (dTop < 0) {\n if ((this.element.offsetTop + dTop) >= 0) {\n draEleTop = this.element.offsetTop + dTop;\n }\n else {\n draEleTop -= this.element.offsetTop;\n }\n }\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll) {\n this.helperElement.scrollIntoView();\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n top = elementArea.top;\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (!this.clone) {\n this.getScrollableValues();\n pageY -= this.tempScrollHeight ? this.parentScrollY : 0;\n pageX -= this.tempScrollWidth ? this.parentScrollY : 0;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n // tslint:disable-next-line:no-any\n var isFirefox = (/Mozilla|Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed \n /**\n * @private\n * @param newProp\n * @param oldProp\n */\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n * @return {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n * @returns {string}\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean}\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // tslint:disable-next-line:no-any\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n // tslint:disable-next-line:max-line-length\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp('\\]');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // tslint:disable-next-line:no-empty\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange? - Specifies to true when we set properties.\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n ;\n /**\n * Calls for child element data bind\n * @param {Object} obj\n * @param {Object} parent\n * @returns {void}\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[key] instanceof Array) {\n for (var _a = 0, _b = parent[key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n ;\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[sfBlazor].updateModel) {\n window[sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n ;\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} listener - Specifies the call to run when the event occurs.\n * @return {void}\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @return {void}\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @return {void}\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n */\n Base.prototype.destroy = function () {\n var _this = this;\n this.element.ej2_instances =\n this.element.ej2_instances.filter(function (i) { return i !== _this; });\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n * @param elem Specifies the HTMLElement or element id string.\n * @param comp Specifies the component module name or Component.\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[i];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[i].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[i], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nimport { VirtualDOM } from './virtual-dom';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n * @param tagName - Name of the tag, id and class names.\n * @param properties - Object to set properties in the element.\n * @param properties.id - To set the id to the created element.\n * @param properties.className - To add classes to the element.\n * @param properties.innerHTML - To set the innerHTML to element.\n * @param properties.styles - To set the some custom styles to element.\n * @param properties.attrs - To set the attributes to element.\n * @private\n */\nexport function createElement(tagName, properties) {\n //tslint:disable-next-line\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n if (ele && classList) {\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new RegExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n if (ele && classList) {\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n }\n return elements;\n}\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n * @param {Element|Node} element - An element the need to check visibility\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n //tslint:disable:no-any\n if (isObject(toElement)) {\n VirtualDOM.prepend(fromElements, toElement);\n }\n else {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n if (isObject(toElement)) {\n VirtualDOM.append(fromElements, toElement);\n }\n else {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n * @param ele - An element is going to evaluate the script\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from the\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @private\n */\nexport function detach(element) {\n if (isObject(element)) {\n return VirtualDOM.detach(element);\n }\n else {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n }\n}\n//tslint: enable:no-any\n/**\n * The function used to remove the element from Dom also clear the bounded events\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @private\n */\nexport function remove(element) {\n if (isObject(element)) {\n VirtualDOM.detach(element);\n }\n else {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n }\n}\n/**\n * The function helps to set multiple attributes to an element\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {{[key:string]:string}} attributes - JSON Object that is going to as attributes.\n * @private\n */\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n if (ele) {\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[iKey] = attributes[key];\n }\n else {\n ele.setAttribute(key, attributes[key]);\n }\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n * @param {string} selector - Selector string need fetch element from the\n * @param {Document|Element=document} context - It is an optional type, That specifies a Dom context.\n * @private\n */\n//tslint:disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n if (isObject(context) && needsVDOM) {\n //tslint:disable-next-line\n return VirtualDOM.vDomSelector({ ele: context, selector: selector, selectAll: false });\n }\n else {\n selector = querySelectId(selector);\n return context.querySelector(selector);\n }\n}\n/**\n * The function selects an array of element from the given context.\n * @param {string} selector - Selector string need fetch element from the\n * @param {Document|Element=document} context - It is an optional type, That specifies a Dom context.\n * @private\n */\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n if (isObject(context) && !needsVDOM) {\n //tslint:disable-next-line\n return VirtualDOM.vDomSelector({ ele: context, selector: selector, selectAll: true });\n }\n else {\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n }\n}\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[i].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[j].indexOf('#') > -1) {\n if (!list[j].match(/\\[.*\\]/)) {\n var splitId = list[j].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[j].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[j] = setId.join('.');\n }\n }\n }\n }\n idList[i] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n * @param {Element|Node} element - An element that need to get siblings.\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @return {void}\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n if (isObject(element)) {\n // tslint:disable-next-line:no-any\n VirtualDOM.setStyleAttribute(element, attrs);\n }\n else {\n Object.keys(attrs).forEach(function (key) {\n // tslint:disable-next-line:no-any\n element.style[key] = attrs[key];\n });\n }\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @return {void}\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @return {void}\n * @private\n */\nexport function matches(element, selector) {\n //tslint:disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\nexport function includeInnerHTML(ele, innerHTML) {\n if (isObject(ele)) {\n if (innerHTML === '') {\n ele.children = [];\n }\n else {\n var res = VirtualDOM.ConvertHTMLToJSon(innerHTML);\n if (res.length) {\n VirtualDOM.assignParent(res, ele);\n ele.children = res;\n }\n }\n }\n else {\n ele.innerHTML = innerHTML;\n }\n}\n//tslint:disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // tslint:disable-next-line:no-any\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n * @param {} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @return {Element | VirtualObject}\n * @private\n */\n//tslint:disable:no-any\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n else {\n return { tagName: element.tagName, attributes: element.attributes };\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","/***\n * Hijri parser\n */\nexport var HijriParser;\n(function (HijriParser) {\n /* tslint:disable */\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990, 29019, 29049, 29078, 29108, 29137, 29167,\n 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522, 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759,\n 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053, 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348,\n 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585, 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939,\n 30968, 30998, 31027, 31057, 31086, 31116, 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530,\n 31559, 31589, 31618, 31648, 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120,\n 32150, 32180, 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243, 33272, 33302,\n 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775, 33804, 33834, 33863, 33893,\n 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306, 34336, 34365, 34395, 34424, 34454, 34483,\n 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837, 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074,\n 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370, 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665,\n 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901, 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254,\n 36284, 36314, 36343, 36373, 36403, 36433, 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845,\n 36875, 36904, 36934, 36963, 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436,\n 37465, 37495, 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558, 38587, 38617,\n 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089, 39118, 39148, 39178, 39208,\n 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621, 39650, 39680, 39709, 39739, 39768, 39798,\n 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153, 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389,\n 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685, 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980,\n 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216, 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570,\n 41599, 41629, 41658, 41688, 41718, 41748, 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161,\n 42190, 42220, 42249, 42279, 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751,\n 42780, 42810, 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873, 43903, 43932,\n 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405, 44434, 44464, 44493, 44523,\n 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936, 44966, 44996, 45025, 45055, 45084, 45114,\n 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468, 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704,\n 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999, 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295,\n 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531, 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885,\n 46915, 46944, 46974, 47003, 47033, 47063, 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476,\n 47506, 47535, 47565, 47594, 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066,\n 48096, 48125, 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189, 49218, 49248,\n 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720, 49749, 49779, 49809, 49838,\n 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252, 50281, 50311, 50340, 50370, 50400, 50429,\n 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784, 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019,\n 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315, 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611,\n 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846, 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200,\n 52230, 52260, 52290, 52319, 52349, 52379, 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792,\n 52822, 52851, 52881, 52910, 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383,\n 53412, 53441, 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505, 54535, 54564,\n 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036, 55066, 55095, 55125, 55154,\n 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567, 55597, 55627, 55657, 55686, 55716, 55745,\n 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100, 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335,\n 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631, 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926,\n 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162, 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517,\n 57546, 57576, 57605, 57634, 57664, 57694, 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107,\n 58137, 58167, 58196, 58226, 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698,\n 58727, 58757, 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820, 59850, 59879,\n 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352, 60381, 60411, 60440, 60469,\n 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883, 60912, 60942, 60972, 61002, 61031, 61061,\n 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415, 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651,\n 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947, 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242,\n 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478, 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832,\n 62862, 62891, 62921, 62950, 62980, 63009, 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423,\n 63453, 63482, 63512, 63541, 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014,\n 64043, 64073, 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136, 65166, 65195,\n 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667, 65697, 65726, 65755, 65785,\n 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199, 66228, 66258, 66287, 66317, 66346, 66376,\n 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730, 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967,\n 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262, 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557,\n 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793, 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148,\n 68177, 68207, 68236, 68266, 68295, 68325, 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738,\n 68768, 68797, 68827, 68857, 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330,\n 69359, 69388, 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451, 70481, 70510,\n 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983, 71013, 71042, 71071, 71101,\n 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514, 71543, 71573, 71602, 71632, 71662, 71691,\n 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046, 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282,\n 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577, 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872,\n 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109, 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464,\n 73493, 73523, 73552, 73581, 73611, 73640, 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053,\n 74083, 74113, 74142, 74172, 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645,\n 74675, 74704, 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766, 75796, 75826,\n 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299, 76328, 76358, 76387, 76416,\n 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830, 76859, 76889, 76918, 76948, 76977, 77007,\n 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361, 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598,\n 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893, 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188,\n 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425, 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779,\n 78808, 78838, 78867, 78897, 78926, 78956, 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369,\n 79399, 79428, 79458, 79487, 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960,\n 79990];\n /* tslint:enable */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[i] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n * @param {Number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string}\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n * @param {Number} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string}\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date}\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number}\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string}\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @returns {string}\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n * @returns {number}\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void}\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n * @param {Object[]} obj Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void}\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void}\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n /* tslint:disable no-any */\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\nexport var IntlBase;\n(function (IntlBase) {\n // tslint:disable-next-line:max-line-length\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = /(^[ncpae]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.currencyFormatRegex = /(^[ca]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n \"days\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"narrow\": {\n \"sun\": \"S\",\n \"mon\": \"M\",\n \"tue\": \"T\",\n \"wed\": \"W\",\n \"thu\": \"T\",\n \"fri\": \"F\",\n \"sat\": \"S\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n }\n },\n \"dayPeriods\": {\n \"format\": {\n \"wide\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n \"1-alt-variant\": \"Common Era\"\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': \"{1} 'at' {0}\",\n 'long': \"{1} 'at' {0}\",\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y',\n },\n }\n },\n \"islamic\": {\n \"months\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"1\": \"Muh.\",\n \"2\": \"Saf.\",\n \"3\": \"Rab. I\",\n \"4\": \"Rab. II\",\n \"5\": \"Jum. I\",\n \"6\": \"Jum. II\",\n \"7\": \"Raj.\",\n \"8\": \"Sha.\",\n \"9\": \"Ram.\",\n \"10\": \"Shaw.\",\n \"11\": \"Dhuʻl-Q.\",\n \"12\": \"Dhuʻl-H.\"\n },\n \"narrow\": {\n \"1\": \"1\",\n \"2\": \"2\",\n \"3\": \"3\",\n \"4\": \"4\",\n \"5\": \"5\",\n \"6\": \"6\",\n \"7\": \"7\",\n \"8\": \"8\",\n \"9\": \"9\",\n \"10\": \"10\",\n \"11\": \"11\",\n \"12\": \"12\"\n },\n \"wide\": {\n \"1\": \"Muharram\",\n \"2\": \"Safar\",\n \"3\": \"Rabiʻ I\",\n \"4\": \"Rabiʻ II\",\n \"5\": \"Jumada I\",\n \"6\": \"Jumada II\",\n \"7\": \"Rajab\",\n \"8\": \"Shaʻban\",\n \"9\": \"Ramadan\",\n \"10\": \"Shawwal\",\n \"11\": \"Dhuʻl-Qiʻdah\",\n \"12\": \"Dhuʻl-Hijjah\"\n }\n }\n },\n \"days\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"narrow\": {\n \"sun\": \"S\",\n \"mon\": \"M\",\n \"tue\": \"T\",\n \"wed\": \"W\",\n \"thu\": \"T\",\n \"fri\": \"F\",\n \"sat\": \"S\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n }\n },\n \"dayPeriods\": {\n \"format\": {\n \"wide\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n }\n }\n },\n \"eras\": {\n \"eraNames\": {\n \"0\": \"AH\"\n },\n \"eraAbbr\": {\n \"0\": \"AH\"\n },\n \"eraNarrow\": {\n \"0\": \"AH\"\n }\n },\n \"dateFormats\": {\n \"full\": \"EEEE, MMMM d, y G\",\n \"long\": \"MMMM d, y G\",\n \"medium\": \"MMM d, y G\",\n \"short\": \"M/d/y GGGGG\"\n },\n \"timeFormats\": {\n \"full\": \"h:mm:ss a zzzz\",\n \"long\": \"h:mm:ss a z\",\n \"medium\": \"h:mm:ss a\",\n \"short\": \"h:mm a\"\n },\n \"dateTimeFormats\": {\n \"full\": \"{1} 'at' {0}\",\n \"long\": \"{1} 'at' {0}\",\n \"medium\": \"{1}, {0}\",\n \"short\": \"{1}, {0}\",\n \"availableFormats\": {\n \"d\": \"d\",\n \"E\": \"ccc\",\n \"Ed\": \"d E\",\n \"Ehm\": \"E h:mm a\",\n \"EHm\": \"E HH:mm\",\n \"Ehms\": \"E h:mm:ss a\",\n \"EHms\": \"E HH:mm:ss\",\n \"Gy\": \"y G\",\n \"GyMMM\": \"MMM y G\",\n \"GyMMMd\": \"MMM d, y G\",\n \"GyMMMEd\": \"E, MMM d, y G\",\n \"h\": \"h a\",\n \"H\": \"HH\",\n \"hm\": \"h:mm a\",\n \"Hm\": \"HH:mm\",\n \"hms\": \"h:mm:ss a\",\n \"Hms\": \"HH:mm:ss\",\n \"M\": \"L\",\n \"Md\": \"M/d\",\n \"MEd\": \"E, M/d\",\n \"MMM\": \"LLL\",\n \"MMMd\": \"MMM d\",\n \"MMMEd\": \"E, MMM d\",\n \"MMMMd\": \"MMMM d\",\n \"ms\": \"mm:ss\",\n \"y\": \"y G\",\n \"yyyy\": \"y G\",\n \"yyyyM\": \"M/y GGGGG\",\n \"yyyyMd\": \"M/d/y GGGGG\",\n \"yyyyMEd\": \"E, M/d/y GGGGG\",\n \"yyyyMMM\": \"MMM y G\",\n \"yyyyMMMd\": \"MMM d, y G\",\n \"yyyyMMMEd\": \"E, MMM d, y G\",\n \"yyyyMMMM\": \"MMMM y G\",\n \"yyyyQQQ\": \"QQQ y G\",\n \"yyyyQQQQ\": \"QQQQ y G\"\n }\n }\n }\n },\n 'timeZoneNames': {\n \"hourFormat\": \"+HH:mm;-HH:mm\",\n \"gmtFormat\": \"GMT{0}\",\n \"gmtZeroFormat\": \"GMT\",\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n },\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###',\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n \"numbers\": {\n \"mapper\": {\n \"0\": \"0\",\n \"1\": \"1\",\n \"2\": \"2\",\n \"3\": \"3\",\n \"4\": \"4\",\n \"5\": \"5\",\n \"6\": \"6\",\n \"7\": \"7\",\n \"8\": \"8\",\n \"9\": \"9\"\n },\n \"mapperDigits\": \"0123456789\",\n \"numberSymbols\": {\n \"decimal\": \".\",\n \"group\": \",\",\n \"plusSign\": \"+\",\n \"minusSign\": \"-\",\n \"percentSign\": \"%\",\n \"nan\": \"NaN\",\n \"timeSeparator\": \":\",\n \"infinity\": \"∞\"\n },\n \"timeSeparator\": \":\",\n \"currencySymbol\": \"$\",\n \"currencypData\": {\n \"nlead\": \"$\",\n \"nend\": \"\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"percentpData\": {\n \"nlead\": \"\",\n \"nend\": \"%\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"percentnData\": {\n \"nlead\": \"-\",\n \"nend\": \"%\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"currencynData\": {\n \"nlead\": \"($\",\n \"nend\": \")\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"decimalnData\": {\n \"nlead\": \"-\",\n \"nend\": \"\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"decimalpData\": {\n \"nlead\": \"\",\n \"nend\": \"\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n }\n },\n \"dates\": {\n \"dayPeriods\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n },\n \"dateSeperator\": \"/\",\n \"days\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n },\n \"months\": {\n \"abbreviated\": {\n \"1\": \"Jan\",\n \"2\": \"Feb\",\n \"3\": \"Mar\",\n \"4\": \"Apr\",\n \"5\": \"May\",\n \"6\": \"Jun\",\n \"7\": \"Jul\",\n \"8\": \"Aug\",\n \"9\": \"Sep\",\n \"10\": \"Oct\",\n \"11\": \"Nov\",\n \"12\": \"Dec\"\n },\n \"wide\": {\n \"1\": \"January\",\n \"2\": \"February\",\n \"3\": \"March\",\n \"4\": \"April\",\n \"5\": \"May\",\n \"6\": \"June\",\n \"7\": \"July\",\n \"8\": \"August\",\n \"9\": \"September\",\n \"10\": \"October\",\n \"11\": \"November\",\n \"12\": \"December\"\n }\n },\n \"eras\": {\n \"1\": \"AD\"\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n * @private\n * @param {string} skeleton\n * @param {Object} dateObject\n * @param {string} type\n * @returns {string}\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n * @private\n * @param {Object} cldr\n * @param {string} culture\n * @param {boolean} isNumber\n * @returns {Dependables}\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n * @private\n * @param {string} type\n * @param {string} numSystem\n * @param {Object} obj\n * @param {boolean} isAccount\n * @returns {string}\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n * @private\n * @param {string} skeleton\n * @returns {NumericSkeleton}\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n /* tslint:disable no-any */\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n * @private\n * @param {string} pattern\n * @param {boolean} needFraction\n * @param {string} cSymbol\n * @param {boolean} fractionOnly\n * @returns {NegativeData}\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n * @private\n * @param {string} val\n * @param {string} sym\n * @returns {string}\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n return val.replace(IntlBase.defaultCurrency, sym);\n }\n return '';\n }\n /**\n * Returns currency symbol based on currency code\n * @private\n * @param {Object} numericObject\n * @param {string} currencyCode\n * @returns {string}\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n * @private\n * @param {string} format\n * @param {CommonOptions} dOptions\n * @param {Dependables} obj\n * @returns {GenericFormatOptions}\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n * @private\n * @param {string} format\n * @param {CommonOptions} dOptions\n * @param {Object} numObject\n * @returns {NegativeData}\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n cOptions.useGrouping = integerPart.indexOf(',') !== -1;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n cOptions.groupSeparator = dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/\\'/g, '');\n cOptions.nend = cOptions.nend.replace(/\\'/g, '');\n }\n return cOptions;\n }\n /**\n * Returns formatting options for currency or percent type\n * @private\n * @param {string[]} parts\n * @param {string} actual\n * @param {string} symbol\n * @returns {NegativeData}\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[i];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n * @private\n * @param {Object} dateObj\n * @returns {string}\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n * @private\n * @param {string} culture\n * @param {DateFormatOptions} options\n * @param {Object} cldr\n * @returns {string}\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n // tslint:disable-next-line:no-any\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // tslint:disable-next-line:no-any\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n * @private\n * @param {string} culture\n * @param {NumberFormatOptions} options\n * @param {Object} cldr\n * @returns {string}\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/\\'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[x] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[iCulture] || defaultFirstDay;\n }\n return firstDayMapper[firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param pData\n * @param aCurrency\n * @param rCurrency\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(this.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type\n */\nfunction getObject(instance, curKey, defaultValue, type) {\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[curKey];\n}\n/**\n * Returns object array\n * @param {ClassObject} instance\n * @param {string} curKey\n * @param {Object[]} defaultValue\n * @param type\n * @param {boolean} isSetter\n * @returns {Object[]}\n */\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[i], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[i], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[i], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n * @param {Object} defaultValue\n * @param {string} curKey\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[curKey] = defaultValue;\n }\n return this.properties[curKey];\n };\n}\n/**\n * Set the properties for the object\n * @param {Object} defaultValue\n * @param {string} curKey\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[curKey] !== newValue) {\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n */\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[curKey], extendFunc, descriptor);\n });\n }\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[curKey], 'isComplexArray', { value: true });\n }\n return this.properties[curKey];\n };\n}\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[curKey] = newValCollection;\n };\n}\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[curKey] = newValCollection;\n };\n}\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[curKey] = defCollection;\n }\n return this.properties[curKey];\n };\n}\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n Array.prototype[dFunc].apply(prop, [newValue[i]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[i], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[i], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[dFunc].apply(prop);\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n /* tslint:enable no-function-expression */\n}\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[keyString][action] = arrayFunction;\n }\n }\n return modelObject;\n}\n/**\n * Method used to create property. General syntax below.\n * @param {T} defaultValue? - Specifies the default value of property.\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n * @param {T} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n * @param {Function} defaultType - Specifies the default value of property.\n * @param {Function} type - Specifies the class factory type of complex object.\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n * @param {T[]} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n * @param {T[]} defaultType - Specifies the default type of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n * @param {Function} defaultValue? - Specifies the default value of property.\n * @param {boolean} isComplex? - Specifies the whether it is complex object.\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n /* tslint:disable no-any */\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n target.propList[propertyType + 'Names'].push(key);\n /* tslint:enable no-any */\n}\n/**\n * Returns an object containing the builder properties\n * @param {Function} component\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n * @param {any} component -specifies the target component for which builder to be created.\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n * @param {Object} context\n * @param {string} prefix\n * @private\n */\nfunction getParentContext(context, prefix) {\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+\\ ' + reference + '' + div.innerHTML +\n '' + '');\n printWindow.document.close();\n printWindow.focus();\n // tslint:disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n * @param {number|string} value\n * @return {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|%|px|vh|vm|vmax|vmin|em/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n * @return {boolean} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n * @return {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n * @return {HTMLElement} result\n * @param {HTMLElement | object} element\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[xPath])) {\n return document.evaluate(element[xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n * @param {string | HTMLElement} element\n * @param {any} component\n * @return {Object} inst\n * @private\n */\n// tslint:disable-next-line\nexport function getInstance(element, component) {\n // tslint:disable-next-line:no-any\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[instances]) {\n for (var _i = 0, _a = elem[instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n * @param {string | HTMLElement} element\n * @param {Object} instance\n * @return {void}\n * @private\n */\nexport function addInstance(element, instance) {\n // tslint:disable-next-line:no-any\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[instances]) {\n elem[instances].push(instance);\n }\n else {\n elem[instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n * @return {any}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function uniqueID() {\n // tslint:disable-next-line:no-any\n if ((typeof window) === 'undefined') {\n return;\n }\n // tslint:disable-next-line:no-any\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[i];\n }\n return ret;\n}\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!seen.has(othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n return seen.add(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, customizer, bitmask, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= UNORDERED_COMPARE_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var result,\n index = -1,\n length = path.length;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result) {\n return result;\n }\n var length = object ? object.length : 0;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nfunction orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = orderBy;\n"],"names":["extendStatics","__extends","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","Animation","_super","options","_this","call","undefined","easing","ease","linear","easeIn","easeOut","easeInOut","elasticInOut","elasticIn","elasticOut","Animation_1","animate","element","model","getModel","_i","elements_1","slice","document","element_1","delayAnimation","stop","style","animation","removeAttribute","animationId","getAttribute","frameId","parseInt","cancelAnimationFrame","end","delay","setTimeout","applyAnimation","timeStamp","step","timerId","prevTimeStamp","duration","setAttribute","startAnimation","begin","avg","name","timingFunction","progress","requestAnimationFrame","performance","now","toString","e","fail","onPropertyChanged","newProp","oldProp","getModuleName","destroy","rippleEffect","rippleOptions","done","rippleModel","selector","ignore","rippleFlag","isCenterRipple","getRippleModel","isRippleEnabled","Function","add","rippleHandler","parent","rippleUpHandler","rippleLeaveHandler","isPointer","remove","offset","getBoundingClientRect","offsetX","pageX","body","scrollLeft","offsetY","pageY","scrollTop","documentElement","Math","max","abs","left","right","top","bottom","radius","sqrt","diameter","x","y","classList","styles","rippleElement","className","appendChild","window","getComputedStyle","getPropertyValue","transform","removeRipple","eventArgs","indexOf","rippleElements","opacity","parentNode","removeChild","getElementsByClassName","lastPageID","ModuleLoader","loadedModules","inject","requiredModules","moduleList","reqLength","clearUnusedModule","modl","moduleList_1","module","modName","member","isModuleLoaded","moduleObject","args","memberName","getMemberName","isProperty","loadedModule","push","clean","_a","modules","usedModules","map","arg","removableModule_1","filter","mod","splice","toLowerCase","substring","componentCount","lastHistoryLen","versionBasedStatePersistence","Component","randomId","isStringTemplate","needsID","isReactHybrid","enableRtl","setProperties","locale","moduleLoader","localObserver","on","detectFunction","appendTo","isDestroyed","enablePersistence","setPersistData","refreshing","trigger","cancel","off","refresh","clearChanges","preRender","injectModules","render","accessMount","mount","getRootElement","actualElement","getLocalData","eleId","id","localStorage","getItem","ej2StatePersistenceVersion","moduleClass","isProtectedOnChange","getUniqueID","mergePersistData","addEventListener","bind","inst","addInstance","renderComplete","wrapperElement","isRendered","dataBind","event","handler","context","event_1","event_2","notify","property","argument","getInjectedModules","injectedModules","Inject","createElement","tagName","prop","isVDOM","triggerStateChange","setState","currentContext","calls","keys","data","JSON","parse","setItem","getPersistData","renderReactTemplates","clearTemplate","templateName","index","definedName","isHistoryChanged","pageID","location","href","history","url","hash","charCodeAt","addOnPersist","persistObj","options_1","objValue","getActualProperties","stringify","value","obj","ignoreOnPersist","iterateJsonProperties","properties","ignoreList","newObj","_loop_1","newList","str","RegExp","test","replace","this_1","defaultPosition","isDraggedObject","isDragged","Position","apply","Draggable","dragLimit","Draggable_1","getDefaultPosition","borderWidth","padding","diffX","prevLeft","prevTop","dragProcessStarted","tapHoldTimer","externalInitialize","diffY","parentScrollX","parentScrollY","droppables","toggleEvents","isIE","scope","isUnWire","ele","handle","enableTapHold","isDevice","isTouch","mobileInitialize","initialize","touchStartEvent","evt","currentTarget","removeTapholdTimer","tapHoldThreshold","touchMoveEvent","touchEndEvent","clearTimeout","getScrollableParent","axis","tempScrollHeight","scrollHeight","tempScrollWidth","scrollWidth","getScrollableValues","contains","curTarget","currentStateTarget","isDragStarted","abort","abortSelectors","preventDefault","changedTouches","type","intCoord","getCoordinates","initialPosition","clone","pos","clientX","clientY","relativeXPosition","relativeYPosition","intDragStart","intDestroy","isPreventSelect","isChangeTouch","intCordinate","styleProp","margin","marginLeft","marginTop","marginRight","marginBottom","dragTarget","intClosest","isReplaceDragEle","currentStateCheck","calculateParentPosition","position","getMousePosition","isDragScroll","distance","getHelperElement","dragTargetElement","helperElement","parentClientRect","offsetParent","dragStart","getProperTargetElement","bindEvents","bindDragEvents","dragElement","dragArea","setDragArea","enableTailMode","parseFloat","posValue","getProcessedPositionValue","dragElePosition","getDragPosition","intDrag","intDragStop","setGlobalDroppables","elementInViewport","el","offsetTop","offsetLeft","width","offsetWidth","height","offsetHeight","pageYOffset","pageXOffset","innerHeight","innerWidth","queryPositionInfo","rect","docHeight","getDocumentWidthHeight","docWidth","drag","eleObj","checkTargetElement","instance","flag","hoverObject","triggerOutFunction","dragData","intOver","helper","tLeft","tTop","pagex","pagey","dLeft","dTop","skipDistanceCheck","helperWidth","helperHeight","draEleTop","draEleLeft","iTop","iLeft","tempDraEleTop","dragValue","enableAutoScroll","scrollIntoView","intOut","temp","docBody","docEle","dragStop","dragStopCalled","intDrop","change","eleWidthBound","eleHeightBound","elementArea","tborder","tpadding","lowerKey","isNaN","prevStyle","pointerEvents","elementFromPoint","oldEle","isdragscroll","dragEle","srcElement","isOffsetParent","cursorAt","sender","innerHTML","reset","draggable","draggedElement","dropIns","getDropInstance","parent_1","parentElement","drop","eleInst","ej2_instances","eleInst_1","Droppable","mouseOver","wireEvents","area","accept","isDrag","isDropArea","canDrop","droppedElement","display","coord","SwipeSettings","swipeRegex","Touch","touchAction","tapCount","startEvent","point","updateChangeTouches","isTouchMoved","movedDirection","startPoint","lastMovedPoint","startEventData","hScrollLocked","vScrollLocked","tStampStart","Date","timeOutTapHold","tapHoldEvent","moveEvent","endEvent","touchCancelEvent","cancelEvent","movedPoint","eScrollArgs","calcScrollPoints","scrollArg","startEvents","originalEvent","startX","startY","distanceX","distanceY","scrollDirection","velocity","getVelocity","timeOutTap","swipeFn","tap","tapThreshold","modeclear","floor","userAgent","endPoint","calcPoints","swipeArgs","swipeDirection","eSwipeArgs","tDistance","swipeSettings","swipeThresholdDistance","defaultArgs","canTrigger","scrollBool","isScrollable","moved","checkSwipe","modeClear","lastTapTime","getTime","unwireEvents","eleStyle","overflow","overflowX","overflowY","eTapArgs","pnt","newX","newY","newT","xDist","yDist","interval","isColEName","Base","isComplexArraySetter","isServerRendered","allowServerDataBinding","changedProperties","oldProperties","bulkChanges","ignoreCollectionWatch","finalUpdate","childChangedProperties","modelObserver","querySelector","muteOnChange","prevDetection","serverDataBind","callChildDataBind","keys_1","_b","obj_1","getOwnPropertyNames","newChanges","oldChanges","sfBlazor","updateModel","saveChanges","newValue","oldValue","eventName","removeEventListener","eventProp","successHandler","errorHandler","promise","then","isJson","catch","SVG_REG","createElementNS","attrs","attributes","addClass","elements","classes","getClassList","classList_1","curClass","removeClass","classList_2","classArr","split","join","isVisible","visibility","append","fromElements","toElement","isEval","docFrag","createDocumentFragment","executeScript","querySelectorAll","forEach","script","text","head","detach","clearEvents","iKey","select","needsVDOM","vDomSelector","selectAll","querySelectId","charRegex","match","idList","list","j","splitId","setId","closest","nodeType","matches","setStyleAttribute","addClasses","removeClasses","msMatchesSelector","webkitMatchesSelector","HijriParser","dateCorrection","getHijriDate","gDate","day","getDate","month","getMonth","year","getFullYear","tMonth","tYear","yPrefix","julilanOffset","julianNumber","tempMonth","modifiedJulianDate","iyear","z","cyc","iy","im","tempDay","iln","ii","hYear","hmonth","hDate","date","toGregorian","julianDate","a","gDay","gMonth","gYear","onIntlChange","rightToLeft","cldrData","defaultCulture","defaultCurrencyCode","mapper","Internationalization","cultureName","culture","getDateFormat","dateFormat","getCulture","skeleton","getNumberFormat","currency","format","minimumFractionDigits","numberFormatter","getDateParser","dateParser","getNumberParser","numberParser","formatNumber","option","formatDate","parseDate","parseNumber","getDatePattern","isExcelFormat","getActualDateTimeFormat","getNumberPattern","isExcel","getActualNumberFormat","getFirstDayOfWeek","getWeekData","getNumericObject","numObject","getDependables","dateObject","numSystem","symbPattern","pattern","getSymbolPattern","getFormatData","getDateSeparator","IntlBase","blazorCultureFormats","negativeDataRegex","customRegex","latnParseRegex","fractionRegex","defaultCurrency","patternRegex","patternMatch","dateConverterMapper","islamicRegex","firstDayMapper","formatRegex","currencyFormatRegex","curWithoutNumberRegex","typeMapper","getResultantPattern","isIslamic","blazorCulture","resPattern","iType","compareBlazorDateFormats","basicPatterns","dPattern","tPattern","cldr","mode","isNumber","ret","calendartype","parserObject","getMainObject","blazorDefaultObject","defaultObject","numericObject","dateString","isAccount","ConvertDateToWeekFormat","convertMapper","tempString","formatOptions","curFormatMapper","getProperNumericSkeleton","toUpperCase","patternMatcher","fractionDigits","needFraction","cSymbol","fractionOnly","nData","nlead","nend","changeCurrencySymbol","groupPattern","fraction","fmatch","minimumFraction","maximumFraction","val","sym","getCurrencySymbol","currencyCode","altSymbol","symbol","customNumberFormat","dOptions","cOptions","maximumFractionDigits","integerPart","useGrouping","fractionPart","minimumIntegerDigits","lastIndexOf","isCurrencyPercent","currencySymbol","isCurrency","percentSymbol","symbolPattern","numberMapper","numberSystem","groupSeparator","numberSymbols","groupData","getGroupingDetails","parts","actual","part","loc","substr","dateParseRegex","monthIndex","days","C","P","N","A","E","customFormat","formatSplit","pData","minusSymbol","dateObj","dependable","calendar","actualPattern","tLength","timeZonePattern","numMapper","getNumberMapper","getNumberingSystem","timeZone","timezone","getTimezoneOffset","hourFormat","timeSeparator","gmtZeroFormat","getTimeZoneValue","gmtFormat","minFrac","parseOptions","custom","numrericObject","curObj","curMatch","curCode","hasNegativePattern","minDigits","maxDigits","diff","fractionDigitsPattern","digits","integer","minimumIntegerPattern","no","groupingPattern","cPattern","processSymbol","firstDay","iCulture","replaceBlazorCurrency","aCurrency","rCurrency","iCurrency","pData_1","getWeekOfYear","weeknum","newYear","getDay","daynum","nday","getObject","curKey","defaultValue","getObjectArray","isSetter","isFactory","result","len","curType","propertyGetter","propertySetter","oldVal","complexGetter","complexSetter","complexArrayGetter","defCollection","controlParent","extendFunc","descriptor","complexArrayDefinedCallback","configurable","complexArraySetter","oldValueCollection","newValCollection","dFunc","keyString","propName","getParentKey","model_1","getArrayModel","ejsAction","isControlParent","arrayFunction","modelObject","Property","propertyDescriptor","set","get","enumerable","addPropertyCollection","Complex","Collection","Event","eventDescriptor","finalContext","getParentContext","prefix","NotifyPropertyChanges","classConstructor","propertyType","propList","props","complexProps","colProps","events","propNames","complexPropNames","colPropNames","eventNames","propertyName","curText","HAS_ROW","HAS_SVG","blazorTemplates","getRandomId","random","compile","templateString","compiler","engineObj","component","templateId","blazorTemplateId","blazorId","childNodes","updateBlazorTemplate","comp","isEmpty","callBack","updateTemplate","resetBlazorTemplate","templateDiv","getElementById","innerTemplates","tempId","tempElement","length_1","setTemplateEngine","classObj","getTemplateEngine","Engine","instances","uid","isBlazorPlatform","createInstance","classFunction","params","arrayParam","unshift","setImmediate","unbind","num","Uint16Array","msCrypto","crypto","getRandomValues","secret","combineArray","messageHandler","source","postMessage","getValue","nameSpace","splits","isUndefined","setValue","start","fromObj","isNullOrUndefined","deleteObject","isObject","merge","destination","temrObj","tempProp","deepmerge","isArray","extend","copied","first","second","deep","arguments_1","obj1","src","copy","isArrayChanged","blazorEventExtend","isBlazor","debounce","eventFunction","out","compareElementParent","child","throwError","message","Error","stack","formatUnit","getInstance","elem","uniqueID","HASH_UNDEFINED","UNORDERED_COMPARE_FLAG","PARTIAL_COMPARE_FLAG","INFINITY","MAX_SAFE_INTEGER","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","g","freeSelf","self","root","freeExports","exports","freeModule","freeProcess","process","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arrayMap","array","iteratee","arraySome","predicate","baseUnary","func","isHostObject","mapToArray","size","setToArray","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","exec","IE_PROTO","funcToString","objectToString","reIsNative","Symbol","Uint8Array","propertyIsEnumerable","nativeKeys","DataView","getNative","Map","Promise","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","Hash","entries","clear","entry","ListCache","MapCache","SetCache","values","__data__","Stack","arrayLikeKeys","inherited","isArguments","n","baseTimes","String","skipIndexes","isIndex","assocIndexOf","eq","has","pop","getMapData","cache","pairs","LARGE_ARRAY_SIZE","eachFunc","fromRight","baseEach","object","baseFor","collection","isArrayLike","iterable","keysFunc","createBaseFor","baseGet","path","isKey","castPath","toKey","baseHasIn","baseIsEqual","other","customizer","bitmask","isObjectLike","equalFunc","objIsArr","othIsArr","objTag","othTag","getTag","objIsObj","othIsObj","isSameTag","equalArrays","tag","byteLength","byteOffset","buffer","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","othProps","othLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isMasked","isFunction","baseIteratee","identity","srcValue","isStrictComparable","matchesStrictComparable","hasFunc","isLength","hasPath","hasIn","baseMatchesProperty","matchData","getMatchData","noCustomizer","baseIsMatch","baseMatches","basePropertyDeep","baseKeys","Ctor","proto","baseOrderBy","iteratees","orders","baseMap","comparer","sort","baseSortBy","objCriteria","criteria","othCriteria","ordersLength","compareAscending","compareMultiple","stringToPath","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","isSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","arrLength","seen","arrValue","othIndex","ArrayBuffer","resolve","ctorString","memoize","string","baseToString","number","quote","resolver","TypeError","memoized","Cache","isArrayLikeObject","guard"],"sourceRoot":""}